2017-05-15 6 views
0

から既存のワークブックにworksheetsをコピーするファイルをxlsxで選択します。私がやりたいのは、ファイル名を文字列にして、コピー先のブックを後で閉じることができるようにすることです。問題は文字列またはバリアントの値が保持されていないことです。excel vba getopenfilenameメソッドを使用するときにファイル名を文字列として解析します。

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

あなたは変数NwWbkWorkbookオブジェクトへの参照を持っているので、あなたは(あなたにも行うことができます)別の変数に名前を維持する必要がいけません。あなたはまた、あなたのコード内の問題は、ユーザーがCancelを押した場合ということです、しかし

によって
NwWbk.Close` 

それを閉じることができ

などNwWbk.Path

NwWbk.NameNwWbk.FullNameでその名前についてのすべてにアクセスすることができますファイルダイアログでFalseブックを開こうとすると、ランタイムエラーが発生します。正しい方法は、選択がキャンセルされた場合にチェックを確認することです。 (また、あなたのinititalコードの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 
関連する問題