我使用下面的代码选择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
答案 0 :(得分:0)
由于您在变量Workbook
中引用了NwWbk
对象,因此您不需要将该名称保存在另一个变量中(您也可以这样做)。您可以通过
NwWbk.Name
,NwWbk.FullName
,NwWbk.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