Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vbscript 在Windows上用VBS处理MS-Word_Vbscript_Ms Word - Fatal编程技术网

Vbscript 在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文

一般问题: 如何将在Microsoft Office中通过“录制”创建的VBA宏中的功能“转换”为可以在.vbs文件中的Windows可执行VBScript

具体问题: 如何批量创建Word文档的缩略图以在Windows资源管理器中查看

备选问题: 在哪里可以找到有关使用VBS操作MS Word文档的文档


我的最终目标是批量创建MS Word文档的缩略图

我的人道做法是:

  • 打开Word文档
  • 按“另存为”
  • 勾选“保存缩略图”
  • 保存和替换
我发现VBS,以.VBS文件的形式,可以操作Word文档。可通过双击Windows资源管理器中的.vbs文件执行的示例:

'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文档导出为图像。