ここから本文です

★ACCESS VBA★CSVをファイルダイアログでインポート★ お世話になります。 今日...

cos********さん

2019/6/1819:33:56

★ACCESS VBA★CSVをファイルダイアログでインポート★

お世話になります。
今日もアクセスについて教えて下さい(T_T)。

現在、アクセスのフォームボタンよりcsvファイルをインポートするのに苦戦しています。

やりたいこととしては、
フォームボタンを選択するとファイルダイアログが表示され、任意のファイルをインポートできるようにしたいです。

違うアクセスにて、エクセルファイルを同様にインポートするというのはできたのですが、
なぜかcsvにするとできません。

そもそものアクセスのVBAが間違ってるのか、参照設定などが間違ってるのか、わからず困っています(T_T)

使っている因数は以下です。

【データ】というテーブルがあったら、消す、ファイルダイアログからファイルを選択したcsvをファイルをインポート、【データ】というテーブル名で新たにテーブルを作成する。というつもりです。googleから色々検索して組み合わせ使っていますm(__)m

画像のようなエラーがでてきてしまいます(T_T)

Option Compare Database

Dim dbs

Dim i

Set dbs = CurrentDb

For i = dbs.TableDefs.Count - 1 To 0 Step -1

If InStr(dbs.TableDefs(i).Name, "AKR") > 0 Then

dbs.TableDefs.Delete dbs.TableDefs(i).Name

End If

Next

dbs.TableDefs.Refresh

Set dbs = Nothing


'変数定義
Dim intRet As Integer 'ダイアログ用変数
Dim FilePath As String 'フルパス用変数

With Application.FileDialog(msoFileDialogOpen)
.Title = "取込みファイル設定ダイアログ"
.Filters.Clear
.Filters.Add "テキスト ファイル", "*.csv"
.FilterIndex = 1

'複数ファイル選択を許可しない
.AllowMultiSelect = False

'初期パスを設定
.InitialFileName = CurrentProject.Path

'ダイアログを表示
intRet = .Show

'ファイルが選択された場合
If intRet <> 0 Then

'パスを設定
FilePath = Trim(.SelectedItems.Item(1))

'インポート

DoCmd.TransferText acImportDelim, 10, "AKR", FilePath

MsgBox "データを取り込みました"


Else

MsgBox "キャンセルしました。"

End If

End With

End Sub

補足すいません。データというテーブルではなくてAKRというテーブル名です。
よろしくおねがいしますm(__)m

AKR&amp;quot,Set dbs,ファイルダイアログ,テキストファイル,InitialFileName,Option Explicit,filepath

閲覧数:
40
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hot********さん

2019/6/1821:23:21

とりあえず質問のエラーは、「msoFileDialogOpen」が定義されてないので

msoFileDialogOpen = 0

となっているからです。

'変数定義

の下に

Const msoFileDialogOpen = 1

を足してください。
更にCSVを読み込む場合は

>DoCmd.TransferText acImportDelim, 10, "AKR", FilePath



DoCmd.TransferText acImportDelim, "", "AKR", FilePath, True, ""

にしてください。
※Trueは1行目が見出しの場合です。

  • 質問者

    cos********さん

    2019/6/1909:38:13

    いつもありがとうございます(T_T)

    そして丁寧でわかりやすい説明もありがとうございます!このまま式使わせて頂き無事インポートすることができました\(^o^)/

    本当にありがとうございます!

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2019/6/19 09:39:37

みなさま全員の回答参考になりました!
そのまま式を使えたのでベストアンサーとさせていただきましたm(__)m

これからもアクセス勉強していきたいので色々とご教授お願いします。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

glo********さん

2019/6/1821:01:57

どの行でエラーなのですか?
↓ここでしょうか?
With Application.FileDialog(msoFileDialogOpen)

それなら↓以下の順で確認すると解かりそうです。
1.msoFileDialogOpen の実際の値はどうなっていますか?
2.変数定義強制の Option Explicit はどうしてしないのですか?
3.「Microsoft office xx.x Object Library」は参照設定されていますか?

これ「2」の状況を確保していれば現状と違うエラーメッセージが返されるので速攻で原因は解かりそうな気がします。
ですから Option Explicit は余程のことがない限り設定すべきです。
「3」はしなくても工夫すれば稼働します(余計な参照設定しなくてもいいというメリット)

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

tom********さん

2019/6/1820:22:21

DoCmd.TransferText acImportDelim, 10, "AKR", FilePath
の「10」はエクセルの場合だけ。

下記を参照されるとよいです。
https://pc.arthhuman.com/vba-import/#CSV

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる