
モジュールからフォーム上のテキストボックスに入力された値を参照する方法で質問です。
内容としては、テキストボックスに入力された日付(yyyymmdd)をファイル名にもつCSVファイルをインポートするといったものです。
フォーム名:Form1
テキストボックス名:TBox1
インポート元:C:\yyyymmdd.csv
インポート先:インポートテーブル
モジュール記述先:標準モジュール
Function Import()
On Error GoTo Import_Err
Dim FilePath As String
FilePath = "C:\" & Format(Form1. TBox1. Value, "yyyymmdd") & ".csv"
DoCmd.TransferText acImportDelim, "インポート定義", "インポートテーブル", FilePath
Import_Exit:
Exit Function
Import_Err:
Resume Import_Exit
End Function
以上の様なモジュールを組んでみましたがインポート出来ませんでした。
エラーは出ませんでしたが何も起こらないといった状態です。
モジュールの部分についてはなんとなくわかるのですが、フォーム側の設定?がよくわかりません。
あと何をどのようにすればテキストボックス内の値を参照可能になりますでしょうか?
何卒よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんばんは。
標準モジュールということは、他でも使うという意味だと思いますので、引数を与えました。
それと、"Import" というユーザー定義関数名は、ぶつからないれども、ちょっとうまくないと思いますので、ImportCSV にしました。後は、Form1 側のどこかのイベントに加えて、
Call ImportCSV(Me )
を加えればよいと思います。
Public Function ImportCSV(obj As Form)
On Error GoTo ImportCSV_Err
Dim FilePath As String
Dim vntDate As Variant
vntDate = obj.Tbox1.Value
If IsDate(vntDate) Then
vntDate = CDate(vntDate)
Else
MsgBox "日付値を正しく入力してください。例:yy/mm/dd", vbInformation
Exit Function
End If
'差し引き 9年の幅を与えて、ミスを減らすことにしました。
If Abs(Year(vntDate) - Year(Date)) > 10 Then
If MsgBox(obj.Tbox1.Value & "入力は正しいですか?", vbInformation + vbYesNo) = vbNo Then
Exit Function
End If
End If
FilePath = "C:\" & Format(vntDate, "yyyymmdd") & ".csv"
If Len(Dir(FilePath)) = 0 Then
MsgBox "ファイルがありません。"
Else
DoCmd.TransferText acImportDelim, "インポート定義", "インポートテーブル", FilePath
End If
ImportCSV_Exit:
Exit Function
ImportCSV_Err:
MsgBox Err.Description
Resume ImportCSV_Exit
End Function
返信ありがとうございます。
ご教授いただいたコードで動かしてみましたがエラーが出てしまったので、チェック部分は外して動作したのでそちらで対応いたしました。
更新版としてエラーチェックを入れたいと思います。
No.1
- 回答日時:
AccessVBAかな。
>エラーは出ませんでしたが何も起こらないといった状態です。
On Error GoTo Import_Err
ここでエラーを無視していますので、この行をコメントアウトして下さい。
エラーが出ると思いますよ。
------------------------------------------------
通常はフォームにコードを書きますが、モジュールに書いているのは何か理由があるのでしょうか?
モジュールに書く場合は、フォームが開いているかチェックする必要があります。
------------------------------------------------
>FilePath = "C:\" & Format(Form1.TBox1.Value, "yyyymmdd") & ".csv"
FilePath = "C:\" & Format(Forms.Form1.TBox1.Value, "yyyymmdd") & ".csv"
Formsが必要だと思います。
また、内容をチェックした方が良いと思います。
------------------------------------------------
下記のような感じでいかがでしょうか?
Function Import()
On Error GoTo Import_Err
Dim FilePath As String
If SysCmd(acSysCmdGetObjectState, acForm, "Form1") <> 0 Then
If IsDate(Forms.Form1.TBox1.Value) Then
FilePath = "C:\" & Format(Forms.Form1.TBox1.Value, "yyyymmdd") & ".csv"
ElseIf IsDate(Forms.Form1.TBox1.Text) Then
FilePath = "C:\" & Format(Forms.Form1.TBox1.Text, "yyyymmdd") & ".csv"
Else
MsgBox "TBox1の内容が日付ではありません。"
End If
If FilePath <> "" Then
DoCmd.TransferText acImportDelim, "インポート定義", "インポートテーブル", FilePath
End If
Else
MsgBox "Form1が開いていません"
End If
Import_Exit:
Exit Function
Import_Err:
Resume Import_Exit
End Function
返信ありがとうございます!
なんとか動く様になりました。
クラスモジュールの記述方法はあったのですが標準に書くときの記述を間違っていました。
大変ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelシート内セル記述の違いに...
-
初歩的な質問ですがよろしくお...
-
フォーム内のテキストボックス...
-
【vba】フォームに書いてあ...
-
Excel VBAで、ユーザーフォーム...
-
エクセルVBA 時間のカウントダ...
-
モジュールシートの置換え等をE...
-
定義、設定、参照されている変...
-
EXECEL VBA コマンドボタンか...
-
Excelで時刻になったら知らせて...
-
KAKASI[変換ソフトをperlで使う...
-
シートモジュールで使う変数を...
-
python2.7 importについて
-
ラズパイ3と音声認識ソフトJul...
-
どのファイルを開いた時もマク...
-
Excel VBA 『Call』で呼び出す...
-
変数のことで、、(初心者)
-
vba で f1 キーを押すと、特定...
-
モジュールからフォームのボタ...
-
SendKeysの使い方について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
Excel VBAで、ユーザーフォーム...
-
ユーザー定義関数に#NAME?が返...
-
vba userFormのSubを標準モジュ...
-
Excel VBA 定義されたプロージ...
-
モジュールとクラスの違いって...
-
モジュールの最大数はいくつな...
-
VBAで別モジュールへの変数の受...
-
Excel VBA 『Call』で呼び出す...
-
エクセルVBAでシートモジュール...
-
VBでグローバル変数を宣言するには
-
【vba】フォームに書いてあ...
-
SendKeysの使い方について
-
モジュールからフォームのボタ...
-
VBAで旧字体を異字体に一括で変...
-
モジュールとは何ですか
-
ExcelでTelnetを動かしたい
-
標準モジュールを削除したい。(...
-
VBA This Workbookモジュール...
-
Access VBA標準モジュールにつ...
おすすめ情報