test.csv とtest2.csvから作成したレコードセットをtest3.csvに出力したいのですが、
”指定した式は、いずれかの引数とデータ型が対応していません。”
とエラーが帰ってきます。
色々試したのですがうまくいきません、
作成したレコードセットをCSVファイルにエクスポートする方法を教えてください。
Private Sub コマンド6_Click()
Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset
Set CN = New ADODB.Connection
CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\;" & _
"Extended Properties='Text;HDR=YES'"
Set RS = CN.Execute("SELECT * FROM test.csv a LEFT JOIN test2.csv b ON a.tel = b.tel")
DoCmd.TransferText acExportDelim, , RS, "C:\test3.csv", True, ""
Set RS = Nothing
Set CN = Nothing
End Sub
No.3ベストアンサー
- 回答日時:
#2です
解決されたという解釈で良かったのでしょうか。
(記述を見直しました)(前のものでも一応動くとは思います)
ただ、気がかりなのがCドライブ直下と言う事で・・・・
(私はそこには作らないというだけの話ですが)
「test1.csv」「test2.csv」のありかを、「D:\HOGE」と仮定します。
作成する「test3.csv」の場所を「E:\hogehoge」と仮定します。
「E:\hogehoge\test3.csv」が存在したらエラーとなります。
「D:\HOGE」を★★に、「E:\hogehoge」を☆☆で置換えて記述したとすると
(#2の記述をチョッと変更しています。
変な改行表示されるので、一度メモ帳等にコピー&ペーストして確認ください)
Dim CN As ADODB.Connection
Dim sSql As String
Set CN = New ADODB.Connection
CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=★★;" & _
"Extended Properties='Text;HDR=YES'"
sSql = "SELECT * INTO [test3.csv] IN '☆☆'[Text;FMT=Delimited;HDR=YES;IMEX=0;]" _
& " FROM [test.csv] AS a LEFT JOIN [test2.csv] AS b ON a.tel = b.tel;"
CN.Execute sSql
Set CN = Nothing
※ この辺については、Web上のブログで見たような気が気ます。
(SQLで CSV出力指定記述とか・・・)
※ [test3.csv] の後の IN句の記述について、いろいろ確認を取られたらと思います。
30246kiku様
>解決されたという解釈で良かったのでしょうか。
前回頂いたコードで、CSVの置き場所を変更することで当初の目的は果たしました、
今回頂いたコードを参考に知識を深めたいと思います。
今回はご丁寧な対応を頂き大変助かりました。
有難うございました。
No.2
- 回答日時:
以下でどうなりますか。
「test3.csv」が存在していたらエラーになったと思います。
Dim CN As ADODB.Connection
Dim sSql As String
Set CN = New ADODB.Connection
CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\;" & _
"Extended Properties='Text;HDR=YES'"
sSql = "SELECT * INTO [test3.csv] IN '' 'Text;FMT=Delimited;HDR=YES;IMEX=0;DATABASE=C:\'" _
& " FROM [test.csv] AS a LEFT JOIN [test2.csv] AS b ON a.tel = b.tel;"
CN.Execute sSql
Set CN = Nothing
この回答への補足
30246kiku様
CSVファイルの置き場所を変えて実行したところ
頂いたコードでtest3.csvの出力が出来ました。
こちらのパソコンの環境(ファイルアクセス権)によるエラーと考えられます。
頂いたコードで試しました、
>「test3.csv」が存在していたらエラーになったと思います。
test3.csvをC:\に配置してコマンドを実行すると以下エラーになります。
テーブル'test3#csv'は既に存在しています
次にtest3.csv無で実行すると下記エラーが表示されました
オブジェクト'test3.csv'が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください
どうすればこの状況を乗り越える事が出来るのかもう少しだけお付き合い頂ければ大変助かります。
No.1
- 回答日時:
TransferText マクロ アクション
http://office.microsoft.com/ja-jp/access-help/HA …
「テーブル名」引数の説明より
---------------------------
テキスト データのインポート先、エクスポート元、またはリンク先の Access のテーブルの名前を指定します。また、エクスポート元として Access のクエリ (クエリ: テーブル内に格納されているデータについての問い合わせ、またはデータに対して処理を実行するための要求。クエリを使って複数のテーブルからデータを取り出して、そのデータをフォームまたはレポートのデータのソースとして使用できます。)名も入力できます。この引数は省略できません。
・・・・・・・
"TransferText/テキスト変換" アクションを使用している場合、エクスポートするデータは SQL ステートメント (SQL 文字列/ステートメント: SELECT、UPDATE、または DELETE などの SQL コマンドを定義し、WHERE および ORDER BY などの句を含む式。通常、SQL 文字列/ステートメントはクエリおよび集計関数で使用されます。)では指定できません。SQL ステートメントを使用する代わりに、クエリを作成して、そのクエリの名前をこの引数に指定します。
---------------------------
クエリが作れない状況なら
レコードセットを読みながら、テキストファイルに書き出す、
とか
Excel に CopyFromRecordset で貼り付け、CSVで保存する、
など。
早速のアドバイス有難うございます。
>クエリを作成して、そのクエリの名前をこの引数に指定します。
に従い
Set RS = CN.Execute("SELECT * FROM test.csv a LEFT JOIN test2.csv b ON a.tel = b.tel")
上記表記の後に下記追加しました
Set Qdf = CurrentDb.CreateQueryDef("test_q", RS)
今度は
実行時エラー 3421
データ型の変換エラーが発生しました
とエラーが出てしまいます、こちらも色々調べたのですが解決できません
出来ましたらアドバイス頂きたく存じます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- その他(プログラミング・Web制作) pythonのpandasのcsvの外部結合(outer_join)した際に列が想定とは異なる事象 1 2022/05/25 13:23
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
AccessでSQL結果を直接csvに書き出すには?
Word(ワード)
-
Access 1レコードずつcsvで出力したい
その他(データベース)
-
SELECTした結果に行番号を求めたい
PostgreSQL
-
-
4
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
5
【Access】クエリで抽出したデータをCSV形式でエクスポートできますか?
Access(アクセス)
-
6
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
7
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
8
ACCESS で 項目名を出力せずにエクスポートしたい
その他(データベース)
-
9
ダブルコーテーション付きでCSV出力
Visual Basic(VBA)
-
10
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
11
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
12
ACCESSでタイトルバーを非表示にする方法
Access(アクセス)
-
13
Accessのフィールド名に半角括弧を使ってしまった
Visual Basic(VBA)
-
14
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
15
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
16
Access VBAで読み込んだ配列をcsvファイルにエクスポート
Access(アクセス)
-
17
ACCESSでコントロールソースの変更
Access(アクセス)
-
18
Accessにインポートしたら並び順が変わっちゃった
Access(アクセス)
-
19
【Oracle】ADOでSELECT * FROM ・・・・ を実行すると処理が遅いんです
その他(データベース)
-
20
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sql*loader 数値のロード
-
BCPコマンドについて
-
CSVを1行しかインポートしない...
-
作成したレコードセットのCSV出...
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
あるDBから別のDBのテーブルをs...
-
PL/SQLをWindowsのBATファイル...
-
mysqlにおけるホストのパーセン...
-
数字で「そ」と「り」
-
SQL*Loaderでのデータロード
-
バッチファイルではパスワード...
-
comment on columnについてわか...
-
accdbファイルの最適化
-
mySQLのデータベースにhtmlのコ...
-
ACCESSからリンクでのレコード...
-
DBファイルの中身を直接見れな...
-
create databaseがうまくいきま...
-
Mac Gimp(Painters)ブラシ追加方法
-
料理サイトを作るにあたって・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sql*loader 数値のロード
-
作成したレコードセットのCSV出...
-
MySQL Date型にNULLが設定でき...
-
CSVを1行しかインポートしない...
-
MySQLで連続csvファイルを読み...
-
BAT処理でCSVデータのインポート
-
sqlite3でcsvのインポートがで...
-
大容量CSVのインポート方法を教...
-
BCPコマンドについて
-
データベースからWordpressを復...
-
SQLサーバーにcsv.ファイル...
-
ACCESS VBA でのCSV取込エラー
-
insertを用いてテーブルにレコ...
-
MySQLのLOAD文を使ってCSV...
-
CSVインポート,日本語文字化け
-
csvファイルのヘッダとカンマの...
-
mysql .txtのファイルを変換? ...
-
MySQLにEXCELやCSVなどでの一括...
-
pathを指定してCSVをインポート...
-
【Access2000VBA】CSVファイル...
おすすめ情報