Hej, Det verkar inte som att Word märker att något har ändrats i dokumenten och anser därför inte att det finns något att spara... Jag kör word 2003. För att bli mer detaljerad så varierar det mellan två fel beroende på hur man skriver. Det andra är att det kommer upp ett felmeddelande på raden: Testa att dela upp koden så att du lättare kan se vad som falerar: Tabell finns och den har 7 celler. Har redan testat detta när man kör ett dokument i taget, så den koden är helt rätt. Har testat att förenkla så mycket det går också, men felmeddelandet består. Är du säker på att tabellen finns i rätt sidfot i alla dokumenten? Inget dokument med annorlunda förstasida tex? Ja, har kollat så att det stämmer... Men jag funderar på att kanske hitta ett annat sätt att göra det på än filesearch då, för att få det att funka för senare versioner också. Någon som vet någon annan/nyare metod?VBA, sätta customdocumentproperties för många dokument
Försöker att köra en loop för att sätta customdocumentproperties för flera dokument:
With Application.FileSearch
.NewSearch
.LookIn = PathToUse
.SearchSubFolders = True
.FileName = "*.doc"
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
Set MyDoc = Documents.Open(.FoundFiles(i))
MyDoc.Activate
MyDoc.Activate
MyDoc.CustomDocumentProperties.Add name:="Handläggare", LinkToContent:=False, Type:=msoPropertyTypeString, Value:=Manipulate_string(MyDoc.Sections(1).Footers(wdHeaderFooterPrimary).Range.Tables(1).Range.Cells(7).Range.Text)
'MyDoc.Save
MyDoc.Close 'savechanges:=wdSaveChanges
Next i
End If
End With
Men det är bara dokumentegenskaperna för det dokumentet som vba scriptet ligger (som är öppet) i som faktiskt addas. I de övriga dokumenten händer ingenting. Funktionen "Manipulate_string" är väl uttestad och funkar som den ska. Har testat en hel mängd varianter av ovanstående kod, men lyckas ej. Den går ju igenom alla dokumenten, men gör inget med egenskaperna. Någon som vet hur man ska göra?Sv: VBA, sätta customdocumentproperties för många dokument
Gör så här efter att dokumentegenskapen har satts:
MyDoc.Saved = False
MyDoc.Save
MyDoc.Close
Notera att FileSearch är borttaget från VBA fr.o.m. Office 2007. Om du har tänkt köra koden i 2007 och senare bör du hitta ett annat sätt att leta rätt på dokumenten.
Sv:VBA, sätta customdocumentproperties för många dokument
MyDoc.CustomDocumentProperties.Add name:="Handläggare", LinkToContent:=False, Type:=msoPropertyTypeString, Value:=Manipulate_string(MyDoc.Sections(1).Footers(wdHeaderFooterPrimary).Range.Tables(1).Range.Cells(7).Range.Text)
som säger: "Den begärda medlemmen i en av samlingarna finns inte"
När jag testar ditt tips, Åsa, så är det fortfarande detta fel som kommer upp. Vad kan detta bero på?Sv: VBA, sätta customdocumentproperties för många dokument
MyString = MyDoc.Sections(1).Footers(wdHeaderFooterPrimary).Range.Tables(1).Range.Cells(7).Range.Text
MyDoc.CustomDocumentProperties.Add name:="Handläggare", LinkToContent:=False, Type:=msoPropertyTypeString, Value:=Manipulate_string(MyString)
Kanske är det så att det inte finns någon tabell i sidfoten, eller att tabellen inte har 7 celler...
Sv:VBA, sätta customdocumentproperties för många dokument
Sv: VBA, sätta customdocumentproperties för många dokument
Tror inte att felmeddelandet gäller MyDoc.CustomDocumentProperties.AddSv:VBA, sätta customdocumentproperties för många dokument