実際、私はファイルコンバータツールを書いています。データ値は120x120マトリックスを表します。私が最初に考えたのは、2つのネストされたforループと、最初のループ内の新しい行です。簡単です。
入力ファイルには、各フィス値にvbNewLineがあります。入力ファイルを文字列に解析しましたstrAll
。
入力
strAllには10文字の長さの値が含まれています
" -24.1189" (two blanks before value)
" 1.2345" (four blanks before value)
出力
-24.1189;-24.1189; (...total 120 values...)
-24.1234;-24.1189; (...total 120 values...)
(... total 120 rows ...)
ハットの使用Mid
は簡単に解析できるはずですMid(strAll, 1+i, 10+i)
。ここi
で、はforループのカウンターです。AReplace(stAll, " ", "")
は、3つのブランク、2つのブランク、および1つのブランクをすべて削除する必要があります。
質問:文字列を行列のようにフォーマットされたファイルに出力するにはどうすればよいですか?
Dim intValueLength, maxValue, intValueInRowMax
intValueLength=10
intValueInRowMax=120
maxValues=intValueInRowMax * intValueInRowMax
Sub Strg2Array
arrAll = array()
' convert to array
For i=1 To maxValues
ReDim Preserve arrAll(UBound(arrAll) +1)
arrAll(UBound(arrAll)) = Mid(strAll, 1+(i-1)*intValueLength, i*intValueLength)
Next
End Sub
Sub SaveAll
Dim intValueInRow
intValueInRow=0
Const ForWriting = 2
Set objFSOOut = CreateObject("Scripting.FileSystemObject")
Set objOutput = objFSOOut.OpenTextFile(strFileName, ForWriting, true)
for each value in arrAll
objOutput.Write value
intValueInRow = intValueInRow + 1 'Argh, there is no "++" operator?
If (intValueInRow = intValueInRowMax) Then
objOutput.Write vbNewLine
intValueInRow=0
End If
next
objOutput.Close
Set objFSOOutput = Nothing
End Sub