アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
現在、Excel2010のVBAを使って、ある項目内に改行CRLFを含むCSVを
Excelシートにコピーして加工するマクロを作成しようとしています。
CSV1レコードの例)
"001","b","c","d[CR][LF]
e[CR][LF]
f[CR][LF]
g","h"
4項目名に改行が含まれますが、1レコードあたり5項目のCSVです。
CSVをExcelに取り込むには様々な方法があると思いますが、改行を含んでいても正しく取り込める方法として、
現在は下記のようにOpenText関数を使用して読み込みを行い、シートへ貼り付けています。
Workbooks.OpenText fileName:=取り込みたいファイルの名称, StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlTextQualifierDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, _
Comma:=True, Space:=False, Other:=False, _
FieldInfo:=Array(Array(1, xlTextFormat), Array(2, xlTextFormat), _
・・・・・・・・・・・・・・
このとき、CSVの取込自体はできるのですが、FieldInfoで指定した書式指定
(ここでは文字列をあらわすxlTextFormat)が無視されてしまい、
Excelに取り込んだときには文字列でなく標準の書式になっています。
つまり上記の例では1項目目の"001"が桁落ちして1となってしまいます。
ネットで調べたところ、OpenText関数では拡張子csvのファイルを読み込む際には
FieldInfo指定が無効となるとありました。そこでファイルの拡張子を.txtに変えてみたところ、
今度は項目内改行が認識されず、行区切りの改行とみなされてしまって、項目取り込みがずれてしまいます。
なんとか、桁落ちせず、なおかつ項目内改行も正しく認識できるような方法はないでしょうか。
OpenText関数以外の方法でもかまいませんので、有識者の方々にご教授いただければ、
と思っております。
よろしくお願いします。

A 回答 (2件)

本番データでも確認されたのでしょうか?


当方、きれいな一貫性のある統一されたフォーマットではない場合が
ありましてあの時は本当に手こずりました。

ODBCの場合は、OSの32/64bit × Officeの32/64bit の組み合わせに
応じたDSNの変更をする必要がある場合があります。
回答しましたのはOLEDBによるものなので、
その心配は無い筈です。
Excel2007/2010なら問題ないかと思います。2013は未検証です。
※たまに間違ったことを言いますので鵜呑みにしないでくださいまし。
    • good
    • 0

E:\TMP フォルダに、SS.CSV があるとして


その中身が
"001","b","c","d
e
f
g","h"

とした時に

Sub nnn()
Dim cn As Object
Dim rs As Object

Set cn = CreateObject("ADODB.Connection")

With cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = _
"Data Source=E:\TMP;" _
& "Extended Properties='text;HDR=No;" _
& "FMT=Delimited'"
.Open
End With

Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM [ss.csv]", cn

ThisWorkbook.Sheets(1).Range("A1").CopyFromRecordset rs
rs.Close: Set rs = Nothing
Set cn = Nothing

End Sub

だと?
    • good
    • 0
この回答へのお礼

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

DBのテーブルに見たてて読み込めばいいらしいことは
どこかで聞いたことがありましたが、
私が以前見たWEBサイトでは、ODBCデータソースの登録などが
必要と記載されており、
実行するパソコンが変わるたびにODBCの設定が必要なのかと
思っておりました。

教えていただいた方法では、とりあえずExcel2010が通常インストールされていれば、
端末ごとに設定が必要なことは特にないと考えてよろしいでしょうか。

お礼日時:2014/01/14 00:45

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