excel vba使用getopenfilename方法将文件名解析为字符串

时间:2017-05-15 11:28:00

标签: excel excel-vba vba

我使用下面的代码选择xlsx文件,将worksheets中选定的active workbook复制到现有工作簿。我想要做的是将文件名保持为字符串,以便我可以延迟关闭我复制到的工作簿。麻烦是不保留字符串或变体值。

Dim NwWbk As Workbook

Set NwWbk = Workbooks.Open(Application.GetOpenFilename(filefilter:="Excel Workbooks (*.xls; *.xlsm),*.xls;*.xslm", Title:="Select file to sheets into."))

Workbook(nwwbk).close

1 个答案:

答案 0 :(得分:0)

由于您在变量Workbook中引用了NwWbk对象,因此您不需要将该名称保存在另一个变量中(您也可以这样做)。您可以通过

访问所有有关其名称的内容

NwWbk.NameNwWbk.FullNameNwWbk.Path

您也可以通过

关闭它
NwWbk.Close`

但是,代码中的问题是,如果用户在文件对话框中按Cancel,您将尝试打开导致运行时错误的False工作簿。正确的方法是获取用户的选择,如果取消选择,则检查。 (还要注意对初始代码的Filefilter参数进行一些修正):

Dim NwWbk As Workbook, wbName as string
wbName = Application.GetOpenFilename("Excel Workbooks (*.xls; *.xlsm),*.xls;*.xslm", Title:="Select file to sheets into.")

If wbName = "False" then
    ' User pressed Cancel. Deal with this case
    ' ...
Else
    Set NwWbk = Workbooks.Open(wbName)
    ' Process the opened workbook
    ' ...
    NwWbk .close
End If