Copy link to clipboard
Copied
Can anyone advise on a suitable InDesign CS5 VBScript to remove documents from books?
I have used the Add method succesfully to add documents to books
eg
myBook.bookcontents.add (FilePathandName)
and I assume that the Remove method removes them - but I just can't seem to get the syntax right.
I would like to be able to remove specific documents or remove all documents.
Any suggestions would be welcome.
Try this to remove all docs:
Set myInDesign = CreateObject("InDesign.Application.2022")
Set myBook = myInDesign.ActiveBook
Set myBookContents = myBook.BookContents
For Each myDoc In myBookContents
myDoc.Delete
Next
Copy link to clipboard
Copied
Hi@chrisnaylor ,
this is for ExtendScript, but I think it's also true with the DOM for VBscript:
The book.bookContents collection has the method remove(). There is no argument in this method.
So you have to identify the document you want to remove in a different way. There is property fullName for example.
With ExtendScript you can remove all items of the bookContents collection like that:
myBook.bookContents.everyItem().remove();
If you know the position of the document in your book file, e.g. you want to remove the first one ( counting starts with 0 in ExtendScript ) :
myBook.bookContents[0].remove();
So specify perhaps how you identify a document you want to remove and I can give you more hints.
DOM documentation for ExtendScript with InDesign:
https://www.indesignjs.de/extendscriptAPI/indesign-latest/#BookContent.html#d1e61670
https://www.indesignjs.de/extendscriptAPI/indesign-latest/#Book.html
Regards,
Uwe Laubender
( Adobe Community Professional )
Copy link to clipboard
Copied
Many thanks for your posting.
When I try:
myBook.bookContents.everyItem.remove
or
myBook.bookContents.everyItem().remove()
It fails with error emssage:
Object doesn't support this property or method.
I have tried numerous permutations on this theme but just can't seem to get it right!
Copy link to clipboard
Copied
Try this to remove all docs:
Set myInDesign = CreateObject("InDesign.Application.2022")
Set myBook = myInDesign.ActiveBook
Set myBookContents = myBook.BookContents
For Each myDoc In myBookContents
myDoc.Delete
Next
Copy link to clipboard
Copied
Many thanks for your posting.
That was excellent.
The following code you advised removed all of the documenst from the book
Set myBookContents = myBook.BookContents
For Each myDoc In myBookContents
myDoc.Delete
Next
I'm a bit puzzled as to where the Remove method comes in though - as far as I can tell the Delete method in the above example eemoves the documents from the book but doesn't actually delete them from their original location - which is what I would have ecpected for a delete.
But I am impressed by your advice.
Copy link to clipboard
Copied
You can't delete files with InDesign DOM only: you have to use FSO (file system object) for this.
Copy link to clipboard
Copied
The following code also deletes the files:
Set myInDesign = CreateObject("InDesign.Application.2022")
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set myBook = myInDesign.ActiveBook
Set myBookContents = myBook.BookContents
For Each myDoc In myBookContents
Set myFile = myFileSystemObject.GetFile(myDoc.FullName)
myDoc.Delete
myFile.Delete
Next
It's been ages since I coded in Visual Basic last time: forgot almost everything.
Copy link to clipboard
Copied
Many thanks for our posting.
That certainly helps to clarify matters.
Do you happen to know of an authoritative reference manual for VB in InDesign, by any chance?
Copy link to clipboard
Copied
For reference, you can use Object Browser (e.g. in an MS Office app):
To get started coding in VBS, I recommend you to read the InDesign scripting tutorial. For me it was enough, then I just googled for VB-specific answers as the questions arose. The InDesign scripting DOM is the same for all languages. You can easily find examples in JS and translate them to VBS which is much less popular nowadays.
Copy link to clipboard
Copied
One more thing: if you're serious about scripting in VBS, check out the VBScript Editor. I evaluated and liked it. (My personal opinion) It's intuitive and user-friendly so I could write scripts without even reading its documentation. If I had some paid projects to write in VBS, I would definitely buy it.