在Excel VBA中的文件保存对话框

4

我正在尝试按照这里的教程http://software-solutions-online.com/excel-vba-save-file-dialog-getsaveasfilename/编写代码:

varResult = Application.GetSaveAsFilename(FileFilter:="Excel Files (*.xlsx), *.xlsx")

现在当我编译语法时,我遇到了一个错误:

找不到方法或数据成员

在这个特定的元素GetSaveAsFilename上。

我正在Access 2013中运行此代码以保存Excel 2013 .xlsx文件——我应该更改什么,以便提示用户输入保存名称和位置?


奇怪的是,如果你复制了例子,它竟然不起作用。你是否声明了“varResult”对象(就像例子中一样)? - ashleedawg
@ashleedawg - 是的,我像示例一样将其声明为Variant。可能是因为我正在从Access调用此方法来捕获Excel文件的保存文件名/位置吗? - IcyPopTarts
2个回答

2

这种方法在Access VBA中不起作用。(VBA在Office产品之间并非完全可互换。)

在Access VBA中的示例:

Sub TestFileDialog()
'requires Reference to "Microsoft Office xx.x Object Library"
    Dim strFilename As String
    With Application.FileDialog(msoFileDialogSaveAs)
        If .Show Then
            strFilename = .SelectedItems(1)
        Else
            MsgBox "No filename specified!", vbExclamation
            Exit Sub
        End If
    End With

    'do something with strFilename

End Sub

这应该可以适用于从Access保存Excel对象。


0

另一个问题,如何在MSAccess vba中使用“另存为…”对话框? 这个网站上有一些有用的提示,可能会对你有帮助;我曾经遇到过类似的问题,这个方法解决了我的问题!就像ashleedawg所说的,VBA语法在不同的应用程序中并不完全相同。

你也可以尝试使用Application.FileDialog msoFileDialogSaveAs,但要确保将包含这些符号的库包含到你的项目中。很可能,Access会生成一个提示,告诉你将库引用添加到项目中。 唯一的问题是你不能应用文件类型过滤器。如果这是重要的事情,那么请看一下微软论坛上的这篇指南。使用API函数在Access中显示打开和另存为对话框框


谢谢,但现在我会感觉像个傻瓜,因为我应该“标记”你的答案... :-( 实际上我会留下它,但其他人肯定会注意到它属于“不是答案”的类别...但是,你仍然可以修复它! :-) 它应该被更改为评论或者[编辑]以扩展信息。如果这不是一个S.O.链接,我建议从链接页面中复制/粘贴一些信息(部分原因是链接不会永远存在),但在这种情况下,如果你认为你链接的问题涵盖了与这个问题相同的内容,你可以将这个问题标记为“重复”。 - ashleedawg
更多信息请参考:"[mcve]" 和 "回答只包含其他地方的链接真的是好答案吗?"。顺便说一下,欢迎! - ashleedawg
@ashleedawg 谢谢你的信息!我在这个网站上相对较新,会记住的 :) - tanvi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接