こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access VBA

AccessからVBAを利用してダイアログ形式でExcelファイルのインポートをしたいです。

実行すると、
「このアクションまたはメソッドを実行するには、[File Name/ファイル名]引数が必要です。」
とエラーが出てしまいます。

標準モジュール
—―――――――――――――――――――――――――――――――――――
Function TestGetFileName()

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, True _
)
WizHook.Key = DISABLE_WIZHOOK ' WizHook 無効化
TestGetFileName = strFile

End Function

—―――――――――――――――――――――――――――――――――――


フォームのボタン押下時

—―――――――――――――――――――――――――――――――――――

Public Sub コマンド0_Click()

Dim s As String

s = TestGetFileName

If s = "" Or IsNull(s) Then Exit Sub

DoCmd.TransferSpreadsheet acimport, 10, "取込B", strFileName, False, "注文TB!"

MsgBox "インポートが終了しました。"

End Sub

—―――――――――――――――――――――――――――――――――――

VBA自体かなりの初心者ですが、お知恵をお貸しください。

投稿日時 - 2018-12-18 19:34:47

QNo.9569024

困ってます

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

>実行すると、
>「このアクションまたはメソッドを実行するには、
>[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

投稿日時 - 2018-12-19 04:19:43

お礼

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

投稿日時 - 2018-12-19 12:30:17

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問