- ベストアンサー
Access VBAでExcelファイルのインポートを実行する方法
- AccessからVBAを利用してダイアログ形式でExcelファイルのインポートを実行する方法について教えてください。
- 実行すると、[File Name/ファイル名]引数が必要ですというエラーが出てしまいます。
- VBA自体は初心者ですが、お知恵をお貸しください。
- みんなの回答 (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
お礼
ご教示頂いた内容で実装してみたところ、うまく動きました! 詳細な説明もつけて頂き、感謝です!