General question:
how can functionality in VBA macros created by ‘recording’ in Microsoft Office be ‘translated’ into Windows-executable VBScripts that could be in .vbs files?
Specific question:
how to batch create thumbnails of Word documents for viewing in Windows Explorer?
Alternative question:
where can i find documentation on manipulating MS Word documents with VBS?
my final goal is to batch the process of creating thumbnails for MS Word docs.
my humanly-done method is:
- open a Word doc
- press ‘save as’
- tick ‘save thumbnail’
- save and replace
i found out from a small website that VBS, in the form of .vbs files, can manipulate Word documents. example that can be executed by double clicking the .vbs file in Windows Explorer:
'in a file called "something.vbs"
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
objSelection.Font.Name = "Arial"
objSelection.Font.Size = "18"
objSelection.TypeText "Network Adapter Report"
objSelection.TypeParagraph()
objSelection.Font.Size = "14"
objSelection.TypeText "" & Date()
objSelection.TypeParagraph()
i also found out that by ‘recording macros’, i can get some VBA code that saves a document with a thumbnail. here is a macro that i recorded:
Sub save_with_thumbnail()
'
' save_with_thumbnail Macro
'
'
ChangeFileOpenDirectory _
"E:\"
ActiveDocument.SaveAs2 FileName:="as90520.doc", FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False, CompatibilityMode:=0
End Sub
each of the two approaches solve part of my problems, but i couldn’t integrate them two. therefore i’m asking if anyone –
- can help integrate/combine/whatever the two approaches by converting what the VBA macro did into a windows-executable script, or
- can give a suggestion on how to batch create thumbnail for MS Word docs in Windows Explorer, or
- know of the existence of some reference documentation somewhere that provides more information about this
CreateObject.("Word.Application")and.Documents.Add()and.Selectionand..SaveAs– whatever, all sorts.
hope i have worded the question well enough. thanks in advance for any help.
The initial starting point is different. VBA is usually hosted by another application, which provides a set of built-in objects; for example, if your VBA is hosted in Word, you’ll have access to the Word
Applicationwhich refers to the currently running Word application. In VBS, you have to either create a new Application object and save it in a variable:or get a reference to an already running Word Application:
Once you’ve done that, the code between them is virtually interchangeable:
Bear in mind that in VBA variables can have a type. Instead of the previous variable declaration (
Dim wdDoc), in VBA you can see this:Also, VBA generally has access to enum constants, such as
wdFormatDocument. In VBScript, you can either define the constants manually:Or use the value of the constants directly:
Reference for the Word object model can be found here.
As far as your specific question goes,
ActiveDocumentis a property of anApplicationobject, (see here). So in VBS, the corresponding code might look something like this: