Vbscript 在Windows上用VBS处理MS-Word
一般问题: 如何将在Microsoft Office中通过“录制”创建的VBA宏中的功能“转换”为可以在.vbs文件中的Windows可执行VBScript 具体问题: 如何批量创建Word文档的缩略图以在Windows资源管理器中查看 备选问题: 在哪里可以找到有关使用VBS操作MS Word文档的文档Vbscript 在Windows上用VBS处理MS-Word,vbscript,ms-word,Vbscript,Ms Word,一般问题: 如何将在Microsoft Office中通过“录制”创建的VBA宏中的功能“转换”为可以在.vbs文件中的Windows可执行VBScript 具体问题: 如何批量创建Word文档的缩略图以在Windows资源管理器中查看 备选问题: 在哪里可以找到有关使用VBS操作MS Word文档的文档 我的最终目标是批量创建MS Word文档的缩略图 我的人道做法是: 打开Word文档 按“另存为” 勾选“保存缩略图” 保存和替换 我发现VBS,以.VBS文件的形式,可以操作Word文
我的最终目标是批量创建MS Word文档的缩略图 我的人道做法是:
- 打开Word文档
- 按“另存为”
- 勾选“保存缩略图”
- 保存和替换
'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()
我还发现,通过“录制宏”,我可以获得一些VBA代码,用缩略图保存文档。下面是我录制的一个宏:
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
这两种方法都解决了我的部分问题,但我无法将它们结合起来。因此我想问如果有人
- 通过将VBA宏所做的转换为windows可执行脚本,或
- 可以建议如何在Windows资源管理器中批量创建MS Word文档的缩略图,或者
- 知道某个地方存在一些参考文档,这些文档提供了有关此
和CreateObject的更多信息。(“Word.Application”)
和.Documents.Add()
和.Selection
-任何种类.SaveAs
希望我已经把这个问题说得够好了。提前感谢您的帮助。初始起点不同。VBA通常由另一个应用程序托管,该应用程序提供一组内置对象;例如,如果VBA托管在Word中,则可以访问Word
应用程序
,该应用程序引用当前运行的Word应用程序。在VBS中,必须创建新的应用程序对象并将其保存在变量中:
Dim wdApp
Set wdApp = CreateObject("Word.Application")
或获取已在运行的Word应用程序的引用:
Set wdApp = GetObject(,"Word.Application")
完成后,它们之间的代码实际上可以互换:
Dim wdDoc
Set wdDoc = wdApp.Open("path\to\document.docx")
请记住,在VBA中,变量可以有一个类型。在VBA中,您可以看到以下内容,而不是前面的变量声明(
Dim wdDoc
):
Dim wdDoc As Word.Document
'alternatively:
'Dim wdDoc As Document
此外,VBA通常可以访问枚举常量,例如wdFormatDocument
。在VBScript中,可以手动定义常量:
Const wdFormatDocument = 0
或者直接使用常数的值:
wdApp.ActiveDocument.SaveAs2 FileName:="as90520.doc", FileFormat:= 0
可以找到Word对象模型的参考。
就您的具体问题而言,
ActiveDocument
是应用程序
对象的属性(请参阅)。因此,在VBS中,相应的代码可能如下所示:
Dim wdApp
Set wdApp = CreateObject("Word.Application")
'When you open Word from the Start menu, it automatically adds a blank document for you
'When manipulating Word in a program, we need to do this by hand
'Generally we would store this in a variable, but we don't need to store it in order
'to use the ActiveDocument property; it just has to exist
wdApp.Documents.Add
'copied and pasted from before
wdApp.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
这个答案并不是一个完整的答案 通过录制宏创建的VBA代码根本无法解决“部分问题”。它不能解决问题的任何部分。我进行了实验,发现无论是否选中“另存为”对话框中的“保存缩略图”复选框,宏都是相同的 “将VBA代码改编为VBScript”的想法是行不通的,因为VBA本身根本不起作用。甚至微软似乎也不在乎缩略图: “特定问题”中的要求无法在询问者的预期方法中得到满足。
在“HKEY\U CURRENT\U USER\SOFTWARE\Microsoft\Office\16.0\Common”中有一个注册表设置,可以将缩略图保存在DWORD类型的“SaveThumbnails”(1保存;0不保存)。非常感谢您快速而全面的回答!我还没有试过,但我现在就要试了,我相信它是有效的。我刚刚又遇到了这个问题。什么都不管用。似乎很在乎缩略图;甚至没有文档提到“缩略图”这个词。当我勾选“保存缩略图”和“不保存缩略图”时,录制的宏是相同的。VBA似乎无法完成这项任务,更不用说“试图使VBA代码适应VBS”。我怀疑是不是这个词在处理“缩略图”。回答“这是不可能的”也是一个答案。你有什么版本的Office/Windows?根据,创建缩略图不需要将Office文档导出为图像。