モジュールからフォーム上のテキストボックスに入力された値を参照する方法で質問です。
内容としては、テキストボックスに入力された日付(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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
家の中でのこだわりスペースはどこですか?
自分の家で快適に過ごすために工夫しているスペースはありますか? 例)ベランダでお茶を飲むためのカフェテーブル ゲーミングに特化したこだわりのPCスペース
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
あなたは何にトキメキますか?
「きゅんとした〜♪」 と思う瞬間ってありますよね。 それは恋愛だったり、推し活だったり、映画のワンシーンだったり……。
-
好きな「お肉」は?
牛肉、豚肉、鶏肉、ラム肉、クマやシカの狩猟肉……。 いろ〜んな肉が食べられるようになりましたよね。 あなたがこれまで食べて「これはうまい!」とか「なんじゃこりゃ!」と好きになったお肉を教えてください。
-
フォームのテキストボックスなどの変数名を標準モジュールから参照は可能か?
Visual Basic(VBA)
-
access別のテーブルを参照してテキストボックスに値を表示、編集したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBでグローバル変数を宣言するには
-
Excel VBAでリンク切れをチェッ...
-
【vba】フォームに書いてあ...
-
Excel VBAで、ユーザーフォーム...
-
VBAで旧字体を異字体に一括で変...
-
エクセルVBAでシートモジュール...
-
vba 標準モジュールインポート...
-
ユーザー定義関数に#NAME?が返...
-
Excel VBA 『Call』で呼び出す...
-
acwzlibとは?
-
グラフのX,Y座標を取得したい
-
Form間の値の渡し方
-
モジュールからフォームのボタ...
-
偶数/奇数の判定
-
モジュールとは何ですか
-
シートモジュールで使う変数を...
-
モジュールの最大数はいくつな...
-
Excel VBA 標準モジュール内で...
-
「変数が定義されていません」...
-
VBAで別モジュールへの変数の受...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
Excel VBAで、ユーザーフォーム...
-
ユーザー定義関数に#NAME?が返...
-
Excel VBA 『Call』で呼び出す...
-
エクセルVBAでシートモジュール...
-
VBAで別モジュールへの変数の受...
-
モジュールの最大数はいくつな...
-
VBでグローバル変数を宣言するには
-
グラフのX,Y座標を取得したい
-
VBA This Workbookモジュール...
-
モジュールとクラスの違いって...
-
【vba】フォームに書いてあ...
-
VBAで旧字体を異字体に一括で変...
-
vba userFormのSubを標準モジュ...
-
ベースモジュールって?
-
標準モジュールを削除したい。(...
-
Access VBA標準モジュールにつ...
-
Form間の値の渡し方
-
VBAProjectのモジュ...
-
'Range'メソッドは失敗しました
おすすめ情報