AccessでExcelデータをインポートするVBAを組むとして、 ----------------------------- Public Function データインポート() Dim msg As String
AccessでExcelデータをインポートするVBAを組むとして、 ----------------------------- Public Function データインポート() Dim msg As String msg = getFilePicker If msg = "" Then Exit Function On Error GoTo err_sample DoCmd.TransferSpreadsheet acImportDelim, , "Table", msg, True MsgBox "インポートが終了しました。" Exit Function err_sample: Select Case Err.Number Case 3011 MsgBox "ファイルが見つかりません。処理を終了します。" Case Else MsgBox Err.Number & ":" & Err.Description End Select End Function Function getFilePicker(Optional dTitle As String = "ファイル選択") '2003以降 Const msoFileDialogFilePicker As Integer = 3 Dim fDlg As Object Set fDlg = Application.FileDialog(msoFileDialogFilePicker) fDlg.Title = dTitle fDlg.InitialFileName = "(任意のパス)" fDlg.AllowMultiSelect = False fDlg.Filters.Clear fDlg.Filters.Add "すべてのファイル", "*.*" fDlg.Filters.Add "Excel ファイル (*.xlsx)", "*.xlsx" fDlg.FilterIndex = 1 If fDlg.Show Then getFilePicker = fDlg.SelectedItems(1) Else getFilePicker = "" End Function ----------------------------- というふうにFunctionを二つこさえなければならないと認識しています これをひとつのFunctionで納めるやり方がありませんか?
Microsoft Access | Visual Basic・18閲覧・250
ベストアンサー
Dim msg As String msg = getFilePicker If msg = "" Then Exit Function の部分を Dim msg As String Const msoFileDialogFilePicker As Integer = 3 Dim fDlg As Object Set fDlg = Application.FileDialog(msoFileDialogFilePicker) fDlg.Title = dTitle fDlg.InitialFileName = "(任意のパス)" fDlg.AllowMultiSelect = False fDlg.Filters.Clear fDlg.Filters.Add "すべてのファイル", "*.*" fDlg.Filters.Add "Excel ファイル (*.xlsx)", "*.xlsx" fDlg.FilterIndex = 1 If fDlg.Show Then msg = fDlg.SelectedItems(1) Else Exit Function とでもすればいいんじゃないですかね(未検証ですのであしからず)。
質問者からのお礼コメント
できました…これでファイルチョイスに混乱ない手段が取れます。ありがとうございました!
お礼日時:3/3 9:11