ワークブック内の特定のシートを、作業中の現在のワークブックにインポートしています。インポートは、再度インポートする前に現在のシートを削除することにより、連続して正常に機能します。修正する必要がある小さなことが 1 つあります。GetOpenFilename
アプリケーション をキャンセルまたは終了すると、次のようになります。
False.xlsx が見つかりませんでした (...)
だから私は追加しました:
filespec = Application.GetOpenFilename()
If filespec = False Then Exit Sub
でSub import_click()
、しかし、ファイルを 2 回要求されることは望ましくありません。ただし、含めないfilespec = Application.GetOpenFilename()
と機能しません。コードは次のとおりです。
Sub import_click()
filespec = Application.GetOpenFilename()
If filespec = False Then Exit Sub
Call deletedatasheet
Call import
MsgBox "Data imported", vbInformation
End Sub
Private Sub import()
Dim wsMaster As Worksheet
Dim rd As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If wsMaster Is Nothing Then
ThisWorkbook.Sheets.Add
Set wsMaster = ActiveSheet
Set rd = wsMaster.Range("A1")
wsMaster.Name = "Reviewed"
filespec = Application.GetOpenFilename()
Set wb = Workbooks.Open(Filename:=filespec)
Sheets("Reviewed").Activate
Cells.Copy rd
wb.Close
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Sub deletedatasheet()
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Sheets
If ws.Name = "Reviewed" Then
ws.Delete
End If
Next
Application.DisplayAlerts = True
End Sub
GetOpenFilename
アプリケーション を正常に終了またはキャンセルし、ファイルを一度だけ要求するにはどうすればよいですか?