• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access VBA)

Access VBAでExcelファイルのインポートを実行する方法

このQ&Aのポイント
  • AccessからVBAを利用してダイアログ形式でExcelファイルのインポートを実行する方法について教えてください。
  • 実行すると、[File Name/ファイル名]引数が必要ですというエラーが出てしまいます。
  • VBA自体は初心者ですが、お知恵をお貸しください。

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

>実行すると、 >「このアクションまたはメソッドを実行するには、 >[File Name/ファイル名]引数が必要です。」とエラーが出てしまいます。 TestGetFileNameに引数や戻り値の設定をしていないからです。 TestGetFileNameに引数flgを設定し、戻り値をVariant型入力設定します。 そして、ダイアログでファイルを指定しなかったときの処理も含めて flgを利用してTestGetFileNameに返す文字列を指定します。 Function TestGetFileName(flg As Boolean) As Variant   Const ENABLE_WIZHOOK = 51488399   Const DISABLE_WIZHOOK = 0   Dim strFile As String   Dim intResult As Integer   WizHook.Key = ENABLE_WIZHOOK ' WizHook 有効化   intResult = WizHook.GetFileName( _   0, "", "", "", strFile, "", _   "xlsxファイル (*.xlsx)|*.*", _   0, 0, 0, flg _   )   WizHook.Key = DISABLE_WIZHOOK ' WizHook 無効化   'ダイアログでキャンセルした場合   If flg = -302 Then     TestGetFileName = ""   Else     TestGetFileName = strFile   End If End Function フォームのボタンのクリック時のイベントの中で、質問のコードでは 変数宣言がされていない変数strFileNameがDoCmd文の中で使用されています。 これは変数宣言されたsを入れるべきです。その他もろもろで、以下。 Private Sub コマンド0_Click()   Dim s As String   s = TestGetFileName(False)   If Len(s) = 0 Then Exit Sub   DoCmd.TransferSpreadsheet acImport, 10, "取込B", s, False, "注文TB!"   MsgBox "インポートが終了しました。" End Sub

PSide
質問者

お礼

ご教示頂いた内容で実装してみたところ、うまく動きました! 詳細な説明もつけて頂き、感謝です!