VBA: wdDialogs(wdDialogFileSaveAs) .name 只会给我一个默认路径或默认文件名,而不



我正在尝试使用以下代码从 excel 模块打开一个单词"另存为"对话框。这是代码:

With appWrd.Dialogs(wdDialogFileSaveAs)
.Name = "C:UsersMeDocuments" & "AFileName.docx"
.Format = Word.WdSaveFormat.wdFormatXMLDocument
.Show
End With

这给了我一个对话框窗口,名称字段中有"AFileName",但显示的路径是单词模板文件夹。我可以通过仅包含文件夹路径并排除文件名来获取正确的路径,但这当然会将名称字段留空:

With appWrd.Dialogs(wdDialogFileSaveAs)
.Name = "C:UsersMeDocuments"
.Format = Word.WdSaveFormat.wdFormatXMLDocument
.Show
End With

我似乎无法同时获得路径名和文件名。我正在使用 Office 2016。有什么建议吗?

我知道这是一个老问题,现在可能已经解决了,但我自己在基于 Word 的项目中也遇到了这个问题。根据我的经验,Word(显然也是 Excel)不喜欢处理路径中的 2 个变量。若要解决此问题,请将路径创建为由两个变量组成的字符串:

dim strFullPath as string
dim strRootPath as string
dim strFileName as string
strRootPath = "C:UsersMeDocuments"
strFileName = "AFileName.docx"
strFullPath = strRootPath & strFileName
With appWrd.Dialogs(wdDialogFileSaveAs)
.Name = strFullPath
.Format = Word.WdSaveFormat.wdFormatXMLDocument
.Show
End With

我无法解释为什么 VBA 不接受 .name 的两个变量,但这就是我在项目中处理它的方式。如果路径实际上不存在,您可能会遇到问题(有一些方法可以检查),但从您的评论中,您似乎知道该路径是有效的,所以我在这里假设。对于OP来说可能为时已晚,但也许它会帮助其他人。

使用 wdDialogFileSaveAs(路径的文件夹部分)时,您将该文件夹设置为.Name 属性必须存在,才能打开指向该路径的对话框。

文件名的名称与此问题并不真正相关,除了显示您建议他们将文件另存为的名称。 如果文件夹路径本身不存在,对话框将打开到 MS 的默认文档位置 - 很可能是用户计算机上的"文档库"。

该解决方案要求您首先检查路径是否存在,如果不存在,请选择: 1) 为用户创建文件夹路径,因为它是"预期"位置并且应该存在(注意:您需要在尝试创建后捕获文件夹是否已成功创建和/或存在,因为创建操作可能由于多种原因而失败),然后打开 wdDialogFileSaveAs 对话框。 2)提示用户使用"选择文件夹"类型的对话框(Application.FileDialog(msoFileDialogFolderPicker)),然后是wdDialogFileSaveAs(或一个选择/创建文件夹的操作,然后作为预期的文件名保存到所选位置)。 3) 让 wdDialogFileSaveAs 故障转移到默认文件夹路径 MS。 4)告诉用户"对不起 - 不能这样做,因为文件夹不存在"。

呵呵

相关内容

最新更新