いくつかの CSV を Excel スプレッドシートにインポートする必要があります。CSV の行/列番号はそれぞれ異なります。問題は、一部の値が のような長い数字の文字列であることです
341235387313289173719237217391
。
Excel はこれらの値を (2 倍の) 数値として扱い、データが失われます。
それを解決する私の方法は、次のvba関数を使用して仕事をすることです:
Sub readCSV(f As TextStream, sh As Worksheet)
i = 1
Do
l = Trim(f.ReadLine)
If l = "" Then Exit Sub 'skip the last empty line(s)
l = Mid(l, 2, Len(l) - 1)
ss = Split(l, """,""")
For j = LBound(ss) To UBound(ss) 'j starts from 0
Dim a As Range
With sh.Cells(i, j + 1)
.NumberFormat = "@" 'Force to text format
.Value = ss(j)
End With
DoEvents 'Avoid blocking the GUI
Next j
i = i + 1
Loop Until f.AtEndOfStream
End Sub
問題はパフォーマンスです。[データ] -> [テキストから] を介してデータをインポートしたり、CSV を直接開いたりするよりもはるかに時間がかかります。
より効率的に行う方法はありますか?