AccessVBAでTransferTextを使用しないでVBAでCSVファイルを既存のテーブルに取込もうとしてますが、下記の情報を取込むと
222,"30,33",99
2項目目の「"30,33"」が「"30」と「33"」に分かれて取込んでしまいます。
これを、分けずに「"30,33"」で取込むにはどうすれば良いのでしょうか?
ダブルコーテーション内のカンマが無視できればよいのですが。
前提条件として、取り込む前にCSVファイル内の情報は変換等の変更は出来ないとします。
すみませんが宜しくお願い致します。
使用しているコードは下記の通りです。
Sub さんぷる1()
Dim DB As Database
Dim 基本情報 As Recordset
Dim F As Long
Dim INDATA As String
Dim WWW, IDX
Dim ANS(3)
Set DB = CurrentDb
Set 基本情報 = DB.OpenRecordset("情報", dbOpenDynaset)
F = FreeFile
Open "C:\Documents and Settings\sanple\デスクトップ\test\TEST.CSV" For Input As #F
Do While Not EOF(F)
Line Input #F, INDATA
WWW = Split(INDATA, ",")
IDX = 0
Do Until IDX > UBound(WWW) - 1
ANS(IDX) = WWW(IDX)
IDX = IDX + 1
Loop
基本情報.AddNew
基本情報!項目1 = ANS(0)
基本情報!項目2 = ANS(1)
基本情報!項目3 = 0
基本情報.Update
Loop
Close #F
基本情報.Close
DB.Close
End Sub
No.1ベストアンサー
- 回答日時:
Accessを触っていたときは、Splitを使っていなかったので、的を得ているか不安ですが。
。。SplitはDelimiterの文字列しか区切りと認識しないので、実際のところ不便です。
私は、独自メソッドなどを使用したりして対応していました。
(ReplaceやTrimなどで除いたり、バイトで読んだりなど・・・・)
もしくは、Accessですので、ADOを利用されてみてはいかがですか?
レコードセットに入れ込むときにダブルクォーテーションは文字列として認識してくれます。
GetStringメソッドを使用すれば、Split関数と同じ使い方で、Delimiterも柔軟に指定できます。
以下は、カンタンに取り込んで表示する例です。
Public Sub test1()
Dim CN As New ADODB.Connection
Dim Rs As ADODB.Recordset
CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\;" & _
"Extended Properties=""Text;HDR=NO;FMT=Delimited"""
CN.Open
Set Rs = CN.Execute("select * from TEST.csv", , dbOpenTable)
Do Until Rs.EOF
For i = 0 To Rs.Fields.Count - 1
Debug.Print Rs(i)
Next
Rs.MoveNext
Loop
Rs.Close: Set Rs = Nothing
CN.Close: Set CN = Nothing
End Sub
Cドライブにコネクションして、レコードセットで「TEST.csv」を読み込みます。
後は、フィールドを一個ずつ読み込んでいきます。
この方が簡単なので、私はこっちを使っていました。
(より複雑なものは独自メソッド作成したりしていましたが・・・)
参考URL:http://www.cocoaliz.com/excelVBA/index/35/
ありがとうございます。 色々とやり方があるのですね。
使った事のないコードなので、とても参考になります。
少々解読に時間を下さい。必ず再度ご返事いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
コマンドプロンプト実行後に画...
-
【sendkeysメソッドが動かずに...
-
オートシェイプの位置がずれる...
-
AdapterView<?> parent この部...
-
VB.NET デリゲートへのコールバ...
-
サーブレット DBにある生年月...
-
Excel VBAにて
-
掲示板で、テキストフィールド...
-
boolean型のフィールドとゲッタ...
-
エクセルVBAにおけるON TIMEメ...
-
struts使用時のメソッド
-
VB.netで、シリアル通信のタイ...
-
オーバーロードの「あいまい」...
-
シンボルを解決できません。 ...
-
canvasに描画したものを全て削...
-
VB.NET/256色でのBMPファイル保存
-
タブコントロールの問題 (VB)
-
計算プログラムでの平方根の求め方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
Labelコントロールに数字を代入...
-
final修飾子を使っているのに、...
-
エクセルVBAにおけるON TIMEメ...
-
コマンドプロンプト実行後に画...
-
mainメソッドのthrows節で設定...
-
DataGridViewでセルクリックイ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
onClickで関数呼出し後に、結果...
-
ExcelのxlDialogInsertPictureで。
-
Refreshメソッドの使い方
-
JSPで<SELECT>の中にDBから持っ...
-
【sendkeysメソッドが動かずに...
-
ウィンドウを最前面にできません
-
(String args[])というメッソ...
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA シェイプの原型のサ...
-
VB.netで、シリアル通信のタイ...
-
boolean型のフィールドとゲッタ...
おすすめ情報