以下のコードを使用して、ユーザーがアップロードしたファイルを検証しようとしています。エラー ハンドラーは、アップロードされたファイルの一番上の行で 3 つの特定の列名をチェックします。1 つ以上の列名が存在しない場合、プログラムは、ユーザーがアップロードしたファイルに欠落している列を通知するプロンプトをユーザーに返し、ファイルを閉じる必要があります。
私の現在の VBA コードには、助けを求めている問題がいくつかあります。
- プロンプトは、ユーザーに欠落している列を指定しません。
- アップロードされたファイルに必要なすべての列が存在する場合でも、エラー ハンドラーがトリガーされます。
コード:
Sub getworkbook()
' Get workbook...
Dim ws As Worksheet
Dim filter As String
Dim targetWorkbook As Workbook, wb As Workbook
Dim Ret As Variant
Set targetWorkbook = Application.ActiveWorkbook
' get the customer workbook
filter = ".xlsx,.xls"
caption = "Please select an input file "
Ret = Application.GetOpenFilename(filter, , caption)
If Ret = False Then Exit Sub
Set wb = Workbooks.Open(Ret)
On Error GoTo ErrorLine:
'Check for columns
var1 = ActiveSheet.Range("1:1").Find("variable1", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True).Column
var2 = ActiveSheet.Range("1:1").Find("variable2", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True).Column
var3 = ActiveSheet.Range("1:1").Find("variable3", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True).Column
ErrorLine: MsgBox ("The selected file is missing a key data column, please upload a correctly formated file.")
If Error = True Then ActiveWorkSheet.Close
wb.Sheets(1).Move Before:=targetWorkbook.Sheets("Worksheet2")
ActiveSheet.Name = "DATA"
End Sub