2017-05-27 94 views
0

我想用下面的代码从Excel模块中打开一个单词另存为对话框。这是代码:VBA:wdDialogs(wdDialogFileSaveAs).name将只给我一个默认路径或默认文件名不都是

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

这让我在名称字段“AFileName”一个对话窗口,但显示的路径是Word模板文件夹。我可以通过只包括文件夹路径,不包括文件名,但当然这留下名字字段为空得到正确的路径:

With appWrd.Dialogs(wdDialogFileSaveAs) 
    .Name = "C:\Users\Me\Documents\" 
    .Format = Word.WdSaveFormat.wdFormatXMLDocument 
    .Show 
End With 

我似乎无法得到这两个路径名和文件名。我正在使用Office 2016.有什么建议吗?

+0

是否改变当前目录为' “C:\用户\我\文件\”'(即'CHDIR “C:\用户\我\文件”')用'请将.Name =前“C:\ Users \ Me \ Documents \ AFileName.docx”'版本工作? – YowE3K

+0

在MS Office 2013中测试过。您的代码对我来说工作正常,直到路径存在。你确定你在'C:\ Users \ Me \ Documents \'' –

+0

的路径中有“我”感谢您的建议。我尝试在代码之前使用ChDir命令,并且在with块的一部分中没有任何成功。我发现的最新版本是,如果“C:\ Users \ Me \ Documents \ AFileName.docx”已经存在,它就会起作用。如果将“AFileName.docx”替换为文件夹中已存在的任何文档,代码将工作。但我想创建一个基于变量的新文件。 – userrrrrr

回答

0

使用wdDialogFileSaveAs时,路径的文件夹部分必须存在,以便它打开对话框。

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

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

HTH