Vba 如何访问visual basic word宏中的对话框字段
我尝试将Word 2010文档保存为PDF,然后希望对用户在相应对话框中为此目的选择的文件(名称)执行一些操作。 此外,我还想对对话框设置进行一些预配置。 但是,以下宏(在Microsoft Visual basic for Applications 7.0中,即仅录制然后修改宏时得到的内容)不起作用:Vba 如何访问visual basic word宏中的对话框字段,vba,ms-office,ms-word,Vba,Ms Office,Ms Word,我尝试将Word 2010文档保存为PDF,然后希望对用户在相应对话框中为此目的选择的文件(名称)执行一些操作。 此外,我还想对对话框设置进行一些预配置。 但是,以下宏(在Microsoft Visual basic for Applications 7.0中,即仅录制然后修改宏时得到的内容)不起作用: Sub MyMacro() dim retval as long dim DidTheExportToPdfActuallyTakePlaceSuccessfully as Boolea
Sub MyMacro()
dim retval as long
dim DidTheExportToPdfActuallyTakePlaceSuccessfully as Boolean
dim WhatWasThePdfFilenameTheUserChoseFinally as String
With Dialogs(wdDialogExportAsFixedFormat)
.ExportFormat = wdExportFormatPDF
.OpenAfterExport = True
.OptimizeFor = wdExportOptimizeForPrint
.Range = wdExportAllDocument
.Item = wdExportDocumentContent
.IncludeDocProps = True
.KeepIRM = True
.CreateBookmarks = wdExportCreateNoBookmarks
.DocStructureTags = True
.BitmapMissingFonts = True
.UseISO19005_1 = False
retval = .Show()
' DidTheExportToPdfActuallyTakePlaceSuccessfully = ???
' WhatWasThePdfFilenameTheUserChoseFinally = ???
end with
end sub
首先,我在所有行.ExportFormat
等中都有错误。
这些问题似乎是由后期绑定造成的。
为了避免这个问题,我尝试在顶部添加选项strict off
,但这会立即产生编译错误(“Base或Compare或Explicit或Private expected”)。
我也读过关于反射的文章,但根据在线调查结果(例如dim x as System.Type
或y.gettype()
)似乎也没有编译这些必要的东西
如果我只是删除有问题的行,对话框将成功显示,pdf导出将成功进行。但是,retval
似乎始终为0,无论文件是实际导出的还是用户单击“取消”。更不用说提取实际pdf文件名的失败方式与预填充对话框选项的失败方式相同
我有点不知所措,因为所有通过MS online help进行的谷歌搜索和搜索往往只会将我带到几乎兼容的情况(尤其是,没有发现编译,请参见上文)。实现我的目标的正确方法是什么?广义而言,只有Word中较旧的内置对话框支持“后期绑定”命名参数。大约从Word2000开始,他们中的大多数(如果不是全部的话)只识别Dialog类的早期绑定成员 可能的解决办法包括
- 尝试使用Sendkeys(我总是很难做到最好 (次)
- 尝试通过WIN32+Windows消息控制对话框窗口(不知道 (关于可行性)
- 尽可能调整其中一个标准应用程序文件对话框(在 在这种情况下,可能是Application.FileDialog(msoFileDialogSaveAs)), 然后使用您自己的UserDialog进行后续操作,该对话框会提示您输入任何其他信息 选择所需的选项,然后调用ExportAsFixedFormat来执行此工作
- (+在(c)上的变体,例如使用WIndows窗体在.NET中执行部分操作)