- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一般问题:如何将 Microsoft Office 中“录制”创建的 VBA 宏中的功能“翻译”为 .vbs 文件中的 Windows 可执行 VBScript?
具体问题:如何批量创建Word文档的缩略图以便在Windows资源管理器中查看?
替代问题:在哪里可以找到有关使用 VBS 操作 MS Word 文档的文档?
<小时/>我的最终目标是批处理为 MS 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
这两种方法都解决了我的部分问题,但我无法将它们结合起来。因此我问是否有人 -
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 。<小时/>就您的具体问题而言,
ActiveDocument
是
Application
对象的属性(请参阅
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/
我使用 IBM Personal Communications 12.0.3.0 的宏记录器制作了一个凭据输入宏。它只是在调用时输入我的用户名和密码。 sub Credentials() Dim
该批处理更改了 vbs 代码,使其无法供 vbs 使用。我该如何解决这个问题? 批号: echo Const HIGH = 128 >> prio.vbs echo strComputer = "."
我有 2 个 vbs 文件。 A.vbs: Class test public a public b End Class B.vbs: Dim objShell Set objShell =
以下是我用来尝试在 IIS 6 中创建虚拟目录的条目: [Run] Filename: {tmp}\cscript.exe mkvirtdir.vbs; Parameters: "-c LocalHo
核心vbs代码 ? 1
对于vbs中ping的实现可以通过两种方式 : 1、调用系统ping命令; 2、使用wmi查询pingstate类处理。 1、调用系统ping命令
在看vb开发,看到二维数组时突发奇想用二维数组作为游戏关卡; 1. 选择操作: 游戏开始时会提示选择注册, 登录, 退出三种选项, 2.注册: 注册成功会将用户账户与密码存入用户数据txt文档中
复制指定文件到指定目录下 核心代码 ? 1
复制代码 代码如下: On Error Resume Next Dim WshShell, QQPath, QQselect set wshshell=createobject("
运行前请确定你的电脑安装了word。 复制代码 代码如下: i=0 set wshshell=createobject("wscript.shell") Set objWo
参考代码一: 复制代码 代码如下: Function DeleteLog( ) Dim objFSO, objFolder, strPath,
挺实用的一段代码,用来深入学习vbs,确实不错咯。 复制代码 代码如下: On Error Resume Next '忽略所有错误 Dim filename '声明变量 Di
话说还是闲来练手,初步实现了自己认为的“多线程”下载。(至于是不是多线程,可以参考12楼链接) 为避免冗余,省了一些错误检查。我觉得没多大实际用途,有兴趣的兄弟一起学习讨论呗。欢迎大家指正: 复制
复制代码 代码如下: set oDOM = WScript.GetObject("http://ipseeker.cn//") flag=0 for i=1 to 10 &n
复制代码 代码如下: on error resume next url = " http://www.bathome.net/logging.php?action=login"
效果图: 代码都封装成函数了,方便调用: 复制代码 代码如下: Key = "www-enun-net" '不要用数字
打开狗狗影视,搜索自己需要的资源,资源类型选:电驴,如下图: 我找到一个 19.75gb 的: 点开它,出现如下图的界面,可以看到正常下载地址已被屏蔽。我们复制地址栏中的网址,备用。
最近相关的备份比较频繁,为了校验文件的完整性,老是要打开某文件HASH校验工具,比较麻烦,于是乎写了这个东东,文件较大时计算有点慢,文件的MD5值保存在剪贴板!效果如图: 使用方法: 1.先
CMD当前路径 复制代码 代码如下: test = createobject("Scripting.FileSystemObject").GetF
For Next 语句的基本结构为: 复制代码 代码如下: For counter = start To end [Step step] [statements] [Exit For] [st
我是一名优秀的程序员,十分优秀!