0

この投稿OpenTextで説明されている方法を、次のようなファイルで使用しようとしました。

Ref,AccNum,SCode,RollNum
999,15697668,404040,4921817045040610

このコードを実行すると、4 番目の列はまだ科学表記法で表示されます。

Workbooks.OpenText FileName:="H:\DataFile.csv", Origin:=3, StartRow:=1, _
        DataType:=1, TextQualifier:=1, ConsecutiveDelimiter:=False, _
        Tab:=False, Semicolon:=False, Comma:=True, Space:=False, _
        Other:=False, FieldInfo:=Array(Array(4, 2)), _
        TrailingMinusNumbers:=True

私が間違っていることを知っていますか?

4

4 に答える 4

1

これは機能します:

FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 2))

Array()興味のない値を切り取ることはできないようです。

于 2012-07-23T16:09:28.427 に答える
0

別の方法として、csv を 1 行ずつ読み取り、それを多次元配列にロードし、文字列の前にアポストロフィを追加します。
私はこれをテストしましたが、うまくいくと確信しています。

Sub ReadLines()

Dim oFSO                As FileSystemObject
Dim sLine               As String
Dim vArray()            As String
Dim vArray_Final        As Variant
Dim oTS                 As TextStream
Dim iCols               As Integer
Dim iRows               As Integer

Dim lCnt                As Long
Dim lCnt_X              As Long
Dim lCnt_Y              As Long

Set oFSO = New FileSystemObject
Set oTS = oFSO.OpenTextFile("U:\DataFile.csv")

lCnt_X = 1
lCnt_Y = 1

iCols = 4

Do Until oTS.AtEndOfStream
    sLine = oTS.ReadLine
    iRows = iRows + 1
Loop
Set oTS = Nothing

Set oTS = oFSO.OpenTextFile("U:\DataFile.csv")
ReDim vArray_Final(1 To iRows, 1 To iCols)

Do Until oTS.AtEndOfStream

    lCnt = lCnt + 1
    lCnt_X = 1
    lCnt_Y = 1

    sLine = oTS.ReadLine
    vArray = Split(sLine, ",")

    For lCnt_Y = 1 To iCols
        vArray_Final(lCnt, lCnt_Y) = vArray(lCnt_Y - 1)
    Next lCnt_Y

Loop

Set oTS = Nothing
Set oFSO = Nothing

For lCnt_X = 1 To iRows
    For lCnt_Y = 1 To iCols
        If lCnt_Y = iCols Then
            ThisWorkbook.Sheets(3).Cells(lCnt_X, lCnt_Y).Value = "'" & vArray_Final(lCnt_X, lCnt_Y)
        Else
            ThisWorkbook.Sheets(3).Cells(lCnt_X, lCnt_Y).Value = vArray_Final(lCnt_X, lCnt_Y)
        End If
    Next lCnt_Y
Next lCnt_X

End Sub
于 2012-07-25T12:36:31.150 に答える
0

Excel では、これらの変換が大きな数値に対して自動的に行われますが、数値をテキスト形式で表示することで回避できます。
この例は、構文を示しています。

ThisWorkbook.Sheets(1).Columns(4).NumberFormat = "@"
于 2012-07-23T15:16:47.080 に答える