Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
CSVファイル取込み時にデータ内にスペースがあるとそこで区切られる
投稿日時: 22/07/09 12:19:44
投稿者: tako552101

win8.1、Excel2010です。
UTF-8(LF)、カンマ区切りのCSVファイル(基幹システムからDL)を見よう見まねの以下のコードで取込みしています。カンマ間にスペース(全角)が入っていると、そこで区切られて意図しない部分に列が追加されてしまう事例が発覚しました。
例)「…,日本太郎,…」は取込み後、「AA列=日本太郎」と取込みされ問題なし。
「…,日本 太郎,…」は取込み後、「AA列=日本」「AB列=太郎」となり、AB列が増えてその後1列ずつずれてしまう…
 
配列22番なのでそこを文字列扱いにしてみましたが、結果は同じでした。
回避策ご指導いただきたくお願いします。
 
fn = Application.GetOpenFilename("CSVファイル(*.csv),*.csv")
 
Set wb = Workbooks.Add
 
Dim v(255) As Long
Dim i As Long
For i = 0 To 255
  If i = 10 Or i = 11 Or i = 12 Or i = 13 Or i = 20 Or i = 22 Or i = 75 Or i = 76 Or i = 84 Or i = 86 Or i = 87 Then
   v(i) = 2
  Else
   v(i) = 1
  End If
Next
 
'CSVデータ取込み
With ActiveSheet.QueryTables.Add(Connection:="text;" & fn, Destination:=Range("$A$1"))
  .TextFileCommaDelimiter = True
  .TextFileColumnDataTypes = Array(v)
  .TextFilePlatform = 65001 'Shift_JIS:932 UTF-8:65001
  .Refresh
  .Parent.Names(.Name).Delete
   .Delete
End With
 

回答
投稿日時: 22/07/09 17:14:45
投稿者: simple

再現しませんね。
2019で「テキストから(レガシー)」という
たぶんExcel2010相当のもので試して見ましたが。
 
念のため、
(1)全角空白文字の文字コードを教えてください。
   A1セルにでもコピーして、 =CODE(A1)の値はどうなりますか?
(2)

        .TextFileParseType = xlDelimited
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileOtherDelimiter = Empty
を追加してみてください。
なお、
.TextFileColumnDataTypes = Array(v)

.TextFileColumnDataTypes = v
が本来のように思いますが、どうなんでしょう。
どちらも結果は変わりませんでしたが。

投稿日時: 22/07/10 16:31:42
投稿者: tako552101

simpleさん、ありがとうございます。
 
テストしていただいたんですね。本当にすみません。
 
実はその後、数度となく同じ現象に悩まされていたんですが、その後、必要があって再起動、きょう再び同ファイルで取込みテストをしたのですが、同じ現象になることはありませんでした。この問題で丸1日損しましたが、何が原因なのか全くわかりません。何度やってもスペースで区切られることはなかったのです。
 
人名なので当該データはオープンにできませんが、空白のみ=CODE(A1)「8481」と出ました。
通常のスペースと同じようです。
実際には「○○友 富○○」のように「友」「富」でサンドされた状態です。当該列は全て同一内容でした。
 
PCがおかしかったのか、この投稿をするときに何度も文字化けしました。ファイルがおかしなことになってないことを祈るばかりです。
 
再び同じ現象になった時は指定のコード追加してみたいと思います。
 
お騒がせして本当にすみませんでした。お詫びします。

トピックに返信