私は何を持っていますか:
- .csv ファイル
- 複数の列を持つ
- 最初の列のキーワードのリスト
やりたいこと:
- 「A」と呼ぶ新しい最初の列を追加します(他の列を右側に移動します)
- (現在) 2 番目の列の各単語を読んでください。これを「B」と呼びます
- 列BIの各単語について、列Aに詳細な単語を書きたい
エラボレーション機能は私が担当します。
この .csv 編集を手伝ってもらえますか?
キーワードの最初の行があります。
"B,C,D,E"
"A"
しかし、たとえば、最初に挿入したい
"A,B,C,D,E"
行全体を読み取り、コンマ (,) で分割できます。次に、新しいキーワードを無効にするインデックスの特殊なケースを使用して、ループで文字列を再構築します。
Dim keywords As String
Dim newKeywords As String
Dim arr() As String
Dim keywordToInsert As String
Dim i As Integer
keywords = "B,C,D,E"
keywordToInsert = "A"
arr = Split(keywords, ",")
For i = 0 To UBound(arr) Step 1
If i = 0 Then
newKeywords = keywordToInsert
End If
newKeywords = newKeywords & "," & arr(i)
Next i
これにより、キーワードが表示されます。このループを使用すると、追加の各行を読み取り、このように最初の列を操作する独自のループを作成できるはずです。
または、生のcsvファイルをデータテーブルにアップロードし、フォームのデータグリッドで視覚化してから、データテーブルに列を直接追加することもできます。
これは、CSV ファイルの列を知っていることを前提としています。
Private Sub RewriteFile(ByRef the_sFileName As String)
Dim sFileNameTemp As String
Dim iFileNoInput As Integer
Dim iFileNoOutput As Integer
Dim iField1 As Integer
Dim sField2 As String
Dim datField3 As Date
' Temporary file name.
sFileNameTemp = the_sFileName & ".tmp"
iFileNoInput = FreeFile
Open the_sFileName For Input As #iFileNoInput
iFileNoOutput = FreeFile
Open sFileNameTemp For Output As #iFileNoOutput
Do Until EOF(iFileNoInput)
' Read in each field of each line into a separate variable, then write to temporary file together with new field. (If you don't know a field's type, use Variants)
Input #iFileNoInput, iField1, sField2, datField3
Write #iFileNoOutput, Elaborate(iField1, sField2), iField1, sField2, datField3
Loop
Close #iFileNoOutput
Close #iFileNoInput
' Delete the original file, and replace with new file.
Kill the_sFileName
Name sFileNameTemp As the_sFileName
End Sub