gpt4 book ai didi

vbscript - 在 Windows 上使用 VBS 处理 MS Word

转载 作者:行者123 更新时间:2023-12-02 20:43:13 26 4
gpt4 key购买 nike

一般问题:如何将 Microsoft Office 中“录制”创建的 VBA 宏中的功能“翻译”为 .vbs 文件中的 Windows 可执行 VBScript?

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

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

<小时/>

我的最终目标是批处理为 MS Word 文档创建缩略图的过程。

我的人为方法是:

  • 打开 Word 文档
  • 按“另存为”
  • 勾选“保存缩略图”
  • 保存并替换

我发现from a small website 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 Application。在 VBS 中,您必须创建一个新的 Application 对象并将其保存在变量中:

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 对象模型的引用可以找到 here 。<小时/>就您的具体问题而言, ActiveDocumentApplication 对象的属性(请参阅 here )。所以在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

关于vbscript - 在 Windows 上使用 VBS 处理 MS Word,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13445538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com