Accessのマクロ・VBAにてCSVファイルを
インポートしたいのですが、うまくいきません。

DoCmd.TransferText acImportDelim, , "C:\Documents and Settings\yoshimi\My Documents\顧客マスタテーブル.csv", False
現在のコードです。

「オブジェクト'0.txt’が見つかりませんでした。
オブジェクトが存在していること、名前やパス名が正しいことを確認
してください。」
とエラーが表示されます。

過去ログを検索し、似たようなものを見つけ同じようにしたつもりです。
http://okweb.jp/kotaeru.php3?q=1691138
(回答のANo.1の定義の保存場所が分からずしていません)

どこがおかしいのか教えていただきたいです・・・

このQ&Aに関連する最新のQ&A

A 回答 (3件)

インポート先(保存先)となるテーブルが指定されていないようです。



その分、カンマ(,)が1個少ないなっているために引数がずれて判断され、インポートするファイルが「C:\~顧客マスタテーブル.csv」ではなく、「0.txt」だと判断されているのではないかと思います。
(「False」がファイル名と解釈され(False=0)、テキストファイルと解釈されて拡張子「.txt」をつけてエラー表示された、と)

とりあえず、「Test」テーブルを作成し(フィールドは仮でF1,F2の2つでテキスト型)、「,"C:\~」の前に「,"Test"」を入れて実行してみて下さい。
(csvファイルが3列以上の構成であれば、「テーブル'Test'にはF3フィールドがありません」とのエラーが表示されるようになりると思いますので、適宜F3,F4,・・・と、必要な列数を追加して下さい:定義のかわりです)

この回答への補足

ご返答ありがとうございます。
遅くなり申し訳ありません。
「込み合っています」のメッセージばかりで、書き込めませんでした・・・

教えていただいたように、下記のようになおしました。
Private Sub 商事部門_Click()
On Error GoTo 商事部門_Err

DoCmd.TransferText acImportDelim, , , "Test", "C:\Documents and Settings\yoshimi\My Documents\顧客マスタテーブル.csv", False

商事部門_Exit:
Exit Sub
商事部門_Err:
MsgBox Error$
Resume 商事部門_Exit
End Sub

今度は、
「指定した式は、いずれかの引数とデータ型が対応していません」と
表示されました。

念のため、csvのファイルを2列で文字のみのデータにしてみましたが
同じエラーが表示されます。

何がいけないのでしょうか?

補足日時:2005/10/10 22:46
    • good
    • 1

No.1です。



すみません、

> 「,"Test"」

ではなく、

> 「"Test",」

でした。お詫びの上、訂正いたします。
大変失礼致しました。
    • good
    • 0
この回答へのお礼

ありがとうございました。

(「False」がファイル名と解釈され(False=0)、テキストファイルと解釈されて拡張子「.txt」をつけてエラー表示された

エラーの理由を教えていただいて勉強できました。
&うまくいきました。m(_ _)m

お礼日時:2005/10/11 17:16

手動でインポートしインポートの定義ファイルの作成してください。


 テーブルインポート→テーブル選択新規⇒区切り記号つき→カンマ、先頭行をフィールド名にチェック
 →新規テーブルに保存→各フィールドの型設定→主キーを設定をチェック
 ⇒「これでデータをインポートするための設定は・・・」となります。
  ここで画面の設定ボタンをクリック→インポートの定義ファイルを保存します。
DoCmd.TransferText acImportDelim, "インポートの定義ファイル名","Accessのテーブル名","テキスト名.csv"

DoCmd.TransferText acImportDelim,"インポートの定義ファイル", _
"Test", "C:\Documents\顧客マスタテーブル.csv", False
これでどうでしょうか?参考まで
    • good
    • 0
この回答へのお礼

インポートの定義ファイルを保存
の方法が分からず困っていました。

インポートする際のルールを先にきめておくようなもの・・と
理解しました。(うまく言えませんが)

インポートできました。
ありがとうございました。

お礼日時:2005/10/11 17:18

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qマクロにてaccessへテキストファイルをインポートする方法

マクロを利用しaccessへテキストファイルをインポートしようとしているのですが、
どのHPを参照しても、
マクロを利用してのテキストインポートはできないみたいなことが書かれてます。
一度、CSVに落として実行するしか方法はないのでしょうか?

Aベストアンサー

1度、「ファイル」「外部データの取り込み」でテキストファイルを参照
左下の「設定」ボタンでフィールドの設定をして定義を保存します。

マクロにて「テキスト変換」を選び
[変換の種類]区切り記号付きインポート 又は 固定長インポート
[定 義 名]上記で保存した定義
[テーブル名]保存するテーブル
[ファイル名]テキストファイル名(パス付き)

これでできると思いますが...

QACCESSで毎回CSVファイルをテーブルにインポートする

ACCESSでGUIで毎回CSVファイルをインポートしていますが、
(テーブル→新規作成→デーブルのインポート)
自動化?VBA?することはできるのでしょうか。
ACCSESSは初心者でよくわかっていません。
よろしくおねがいします。

Aベストアンサー

>「マクロに設定」のやり方がわかりません。
え、そうなんですか。
アクセスを開くと左側に「マクロ」ってありませんか。
そこで新規作成します。
テーブルを削除するとか、クエリを開く(実行する)とか、動作を順番に設定するのです。
任意に実行したいなら、マクロ名は任意で構いません。
mdbを開いたら、必要なときにマクロを実行するだけです。

>こちらはoffのする方法が、チェックを外せばいいということでしょうか。
見つけましたよね。そのチェックを外します。

あのー、とりあえず解説書などお持ちではないですか。
最低限のことはそういう書籍で勉強して欲しいのですが。(マクロがわからないことにびっくりしたので)
ここで一つ一つやり取りするわけにもいかないので。

QACCESS VBAでファイルを開くダイアログを表示させたい

ACCESSのフォームからコマンドボタンを押すことで、
ファイル開くダイアログが表示されて、
そこでファイル名をクリック指定することで、
実際にそのファイルがインポートされるように仕組みを作りたいと思っています。

VBAでどう記述するのでしょうか?
類似ケースの質問内容も調べましたがピンと来るものがありませんでした。
ご存知の方、教えて頂けるとありがたいです。よろしくお願いします。

Aベストアンサー

CSVファイルの場合ですが、こちらを参考に。
http://www.accessclub.jp/bbs3/0364/superbeg109189.html

Excelの場合は
DoCmd.TransferSpreadsheet acImport, 8, "テーブル名", strFileName, True, ""
のようになります。
詳しくは、TransferSpreadsheet をヘルプで調べてください。
マクロの「ワークシート変換」を 作成し
「マクロを Visual Basic に変換」で
VBA のコードにしてみるのも良いでしょう。

QAccessのマクロでモジュールを実行させたい。

Access2002を勉強中の初心者です。

AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。
マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。
しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」

根本的に方法が間違っているのでしょうか?
アドバイスをよろしくお願いします。

Aベストアンサー

#1です。

ちょっと時間ができたので、Accessのヘルプで、
 "RunCode/プロシージャの実行" アクション
についてのトピックを見てみました。

結論から言うと、基本的な考え方が間違っているみたいです^^;。

「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。
Subプロシージャではエラーになります。


つまりご質問の件では、
「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。
そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。

Qcsvファイルをアクセスにインポート

こんにちは。Access2000について質問させてください。よろしくお願いいたします。


csvファイル内のデータをAccess2000に作成したデータベースにインポートしたいんのですが、どうすれば良いでしょうか?

何を調べたらいいかもわからない状態で…

どなかかご存知の方がいらっしゃったら教えて下さい。なにとぞ宜しくお願いいたします。

Aベストアンサー

メニューのファイルメニューから外部データの取り込みを選択するかデータベースウィンドウ上で右クリックしインポートを選択します。
ファイルの種類をテキストファイルに設定しcsvファイルのあるフォルダを開きファイルを指定しインポートボタンをクリックするとインポートウィザードが開きますので順次従って進めればできます。
データを保存する場所で既存のテーブルに保存したければ次のテーブルで指定します。ウィザードの設定が終わったら完了ボタンでインポートできます。
ウィザードにある設定ボタンをクリックすればインポート定義を登録できます。インポート定義を登録すれば次回からフィールドの設定などしなくてインポート定義を使って同様のデータ構成のファイルはインポートできるようになります。
ヘルプでインポートで検索すれば出てきますのでそちらも参照してください。

QACCESSのVBAでCSVを取込処理について

ACCESS初心者です。
ACCESSのVBAでCSV取込をしようとしていますが、
うまくいきません。
CSVとテーブルの項目の場所が違ったりオートナンバーが設定されていたりしているので、
そこのところが全くわかりません。
いろいろ調べて試しましたが、うまくいがず行き詰っています。
VBAでなくてもクエリやマクロといったやり方でもいいので、
教えてください。
-------------------------------------------------------------------
VBAプログラム
'処理実行確認画面
rc = MsgBox("処理を実行しますか?", vbOKCancel, "注文データ処理")
If rc = vbCancel Then
Exit Sub
End If

'[ファイルを開く]ダイアログボックスを作成
Set dlgOpen = Application.FileDialog(msoFileDialogOpen)

'ダイアログボックスの初期値をセット
dlgOpen.AllowMultiSelect = False
dlgOpen.Filters.Clear
dlgOpen.Filters.Add "CSVファイル", "*.csv"
dlgOpen.InitialFileName = CurrentProject.Path

'ダイアログボックス表示
retDialog = dlgOpen.Show

'[キャンセル]ボタン
If retDialog = 0 Then
Exit Sub

'[開く]ボタン
Else
'選択したファイル名を表示
Me!txtファイル名IN = dlgOpen.SelectedItems(1)
End If

Const ForRading = 1

strFilePath = txtファイル名IN

Set Con = CurrentProject.Connection
Rec.Open "order_list", Con, adOpenDynamic, adLockOptimistic


Open strFilePath For Input As #FNo
'ファイルの1行目の項目名部分を読み込む(何も処理しない)
Line Input #FNo, txtData

On Error GoTo ErrHndl
'エラーが発生した場合にデータのインポートをなかったこと(ロールバック)
'にするためにトランザクション処理として実行
Con.BeginTrans
'実際のデータ部分(2行目)からの処理
Do While Not EOF(FNo)
Line Input #FNo, txtData
Debug.Print txtData
Loop

Con.CommitTrans

Close #FNo

MsgBox ("処理が完了しました。")

Exit Sub

ErrHndl:
Close #FNo
Con.RollbackTrans
MsgBox "以下のエラーが発生したためロールバックしました。" & vbCrLf & _
Err.Description, vbCritical
----------------------------------------------------------------------------------------

ACCESS初心者です。
ACCESSのVBAでCSV取込をしようとしていますが、
うまくいきません。
CSVとテーブルの項目の場所が違ったりオートナンバーが設定されていたりしているので、
そこのところが全くわかりません。
いろいろ調べて試しましたが、うまくいがず行き詰っています。
VBAでなくてもクエリやマクロといったやり方でもいいので、
教えてください。
-------------------------------------------------------------------
VBAプログラム
'処理実行確認画面
rc = MsgBox("処理を実行します...続きを読む

Aベストアンサー

CSVファイルにタイトル行が有り、テーブルのフィールド名と同じ、
列数も同じ(オートナンバー型フィールドは除く)、
ならTransferTextメソッドでインポートはだめですか。
安全のためインポート定義を利用するべき
オートナンバー型フィールドは考えなくとも自動的に処理されます。
トランザクション処理が出来ないからNGか・・・。

インポート出来ないデータ型(数値に文字など)の場合は
インポートエラーテーブルが自動生成され記録されます。
テキスト型に255超の文字数の場合、超過分は黙って切り捨てられ
エラーは記録されません。

姑息な方法かもしれませんがインポート前にオートナンバーの最大値を控え
インポート処理後にエラーテーブルの有無・レコード数の増加をチェックし
変化が有れば削除クエリで元に戻す。
オートナンバーが大きく飛ぶので最適化で修正
Access VBA 自身を最適化 でGoogleとVBAサンプルもあるけど。。。

・・・
現状の方向だと
dim v() as variant,i as integer
v=split(txtData,",") '配列に格納
for i= lbound(v(i)) to ubound(v(i))
debug.print i,v(i) '添え字と値(タイトル)の確認
next

with rec
.addnew
!購入者氏名(漢字)= v(2)
!注文日時= cdate(v(0) ) 'Cdate 要らないかも?
・・のように対応する配列を指定
.update
end with
のようになるかと思います。
ただ、CSVファイルを、,カンマで分割して配列に入れているだけなので
ExcelでCSV出力した時のようなフォーマット
(位取り有りの数値にダブルクォートがついて、"1,100")
区切り以外でカンマが使われていると項目数・データとも崩れます。
Rollbackすることに。

CSVファイルにタイトル行が有り、テーブルのフィールド名と同じ、
列数も同じ(オートナンバー型フィールドは除く)、
ならTransferTextメソッドでインポートはだめですか。
安全のためインポート定義を利用するべき
オートナンバー型フィールドは考えなくとも自動的に処理されます。
トランザクション処理が出来ないからNGか・・・。

インポート出来ないデータ型(数値に文字など)の場合は
インポートエラーテーブルが自動生成され記録されます。
テキスト型に255超の文字数の場合、超過分は黙って切...続きを読む

QAccessでcsvデータをインポートするマクロを作成したいのですが・・・

Accessでcsvデータをインポートするマクロを作成したのですが、貼付先のデータにはF1フィールドがありませんとでました。でF1フィールドを追加するとF2フィールドがありません。F2を追加するとF3フィールドが~。F3を追加するとF4フィールドが~。という具合にずっとでてしまいインポートできません。ご解答宜しくお願い致します。

Aベストアンサー

インポート先のテーブルは既存のものですか?
その場合は上記のメッセージが出ると思います。

方法1.手動でインポートで左下の「設定」をクリック
フィールド名と形式を選択して「保存」してください。
マクロにてインポートの定義名に先に保存した物を選択して実行にします。

方法2.マクロのインポートの前の行に「オブジェクトの削除」で
当該のテーブルを削除するようにしてください。

1の場合は形式が一定になり、クエリやフォームでの表示もスムーズにできます。
2の場合は、元のデータによって形式が毎回変わる可能性があります。

QAccessでボタンを押したらエクセルデータを読み込み処理をしたい

よろしくお願いします。
AccessからExcelを開けるようにしたいのですが、
コードの記述方法がいまいちわかりません。
教えて頂けますでしょうか。

最終的には、ボタンをクリックしたら、ExcelファイルにあるデータをAccessに取り込み、それでDM用のラベルを作りたいと考えています。
勉強が必要なので、少しずつやろうと考え、
開く為のコードからいろいろいじってみようと考えました。
もし、他に効率の良い学習方法があればそちらもお願い致します。

Aベストアンサー

お世話になります。

>コードの記述方法がいまいちわかりません。
と言う事でしたので,最も簡単な方法を。

(1)Accessのマクロを作ります.
 [アクション]で[ワークシート変換]を選択し,
 画面の下部にある,[アクションの引数]に
 適宜入力します。
 
 作成したマクロを適当な名前をつけて保存します。

(2)Accessメニューバーの
 [ツール]→[マクロ]→[マクロを VisualBasicに変換]を選択し,変換します。

変換されたモジュールを見てみれば,
どんな感じでAccessテーブルにインポートするか
解ると思います。

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Qインポート時のエラー「データ型の変換エラー」

ACCESS2000を使用しています。
CSVファイルをマクロを使い、インポートしようとしているのですが、ある列に「33300G2」というデータがあります。
インポートのマクロを実行するとそのデータのみがインポートエラー(エラー内容は「データ型の変換エラー」)となってしまいます。
ちなみに、エラーが出る列は、「33300G2」以外全てが数字のみなのですが関係あるのでしょうか。
もし原因らしきものがわかればアドバイスよろしくお願いいたします。

Aベストアンサー

インポート定義をして下さい。
インポート→設定→データ型を変更して下さい。
何かあれば補足して下さい。
がんばれ


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報