VBA, sätta customdocumentproperties för många dokument
Hej,
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?
Svara
Sv: VBA, sätta customdocumentproperties för många dokument
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...
Gör så här efter att dokumentegenskapen har satts:
1 2 3 | 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.
Svara
Sv:VBA, sätta customdocumentproperties för många dokument
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:
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å?
Svara
Sv: VBA, sätta customdocumentproperties för många dokument
Testa att dela upp koden så att du lättare kan se vad som falerar:
1 2 | 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...
Svara
Sv:VBA, sätta customdocumentproperties för många dokument
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.
Svara
Sv: VBA, sätta customdocumentproperties för många dokument
Är du säker på att tabellen finns i rätt sidfot i alla dokumenten? Inget dokument med annorlunda förstasida tex?
Tror inte att felmeddelandet gäller MyDoc.CustomDocumentProperties.Add
Svara
Sv:VBA, sätta customdocumentproperties för många dokument
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?
Svara