
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で出力したい
その他(データベース)
-
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
-
4
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
5
【エクセルVBA】DBのデータをCSVに
その他(プログラミング・Web制作)
-
6
レコードセット(ADO.Recordset)で処理レコードは何番目?
Visual Basic(VBA)
-
7
レコードが存在しなかった場合
Microsoft ASP
-
8
Access クエリ実行が急に非常に遅くなりました。
Access(アクセス)
-
9
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
ACCESSのBookmarkプロパティの使い方
その他(データベース)
-
12
レコードセットにnullの場合
Visual Basic(VBA)
-
13
【Access】クエリで抽出したデータをCSV形式でエクスポートできますか?
Access(アクセス)
-
14
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
15
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
16
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
17
クエリ表示と、ADOで抽出したレコードセットが違う
Access(アクセス)
-
18
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
19
「RunSQL」と「Execute」の違い
Access(アクセス)
-
20
VBAで複数のCSVからレコードセットを作りたい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpMyadminについて
-
MySQL Date型にNULLが設定でき...
-
データのインポートの速度について
-
BAT処理でCSVデータのインポート
-
セミコロンで区切り指定サイズ...
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
RedHatES4にPostgresSQLとPHPを...
-
物件検索システム
-
PL/SQLをWindowsのBATファイル...
-
動作中の最適化?
-
あるDBから別のDBのテーブルをs...
-
MYSQLをPHPから呼び出したとき...
-
ユーザにインフォメーション ス...
-
数字で「そ」と「り」
-
エクセルでのデータベース作成...
-
どの程度のデータベースなら、c...
-
wordpressがインストールできな...
-
フィールド名などの隠蔽
-
Mysqlの文字化けについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sql*loader 数値のロード
-
sqlite3でcsvのインポートがで...
-
作成したレコードセットのCSV出...
-
MySQLで連続csvファイルを読み...
-
CSVを1行しかインポートしない...
-
SQLサーバーにcsv.ファイル...
-
MySQL Date型にNULLが設定でき...
-
BAT処理でCSVデータのインポート
-
CSVインポート,日本語文字化け
-
【Access2000VBA】CSVファイル...
-
phpMyadminについて
-
MySQLでのcsvファイル読み込み
-
データのインポート、エクスポ...
-
MySQLにEXCELやCSVなどでの一括...
-
CSVファイルのインポートについて
-
データベースからWordpressを復...
-
csvファイルのヘッダとカンマの...
-
access2000でインポート...
-
BCPコマンドについて
-
phpmyadminでcsvインポートで文...
おすすめ情報