次のような file.txt 構造を取得しました。
"最初" a1 b1 c1 d1 a2 b2 c2 c2 "2番目" e1 f1 e2 f2 "三番" g1h1
Excel ファイルに「1 番目」、「2 番目」、「3 番目」の 3 つのシートがあります。このデータを VBA コードで 3 つのシートに入力する方法は?
私は今でも、テキスト ファイルを 1 行ずつ読み取るのが最善の方法だと考えています。ファイル全体を配列にロードし、後で条件を書き込むことができます。
Sub Read_text_File()
Dim oFSO As New FileSystemObject
Dim oFS
Dim sText as String
Dim vArray
Dim lCnt as Long
Set oFS = oFSO.OpenTextFile("c:\textfile.TXT")
Do Until oFS.AtEndOfStream
lCnt = lCnt + 1
sText = oFS.ReadLine
vArray(lCnt) = sText
Loop
End Sub
次に、配列を調べて、自分のことをします。
または、3 つのシートを表す 3 つの個別の配列にデータをすぐに読み込むこともできます。
これは完全にあなた次第です。
これが役に立ったかどうか教えてください。
マクロの記録を開始し、スペースで区切られた txt ファイルを開きます。ctrl + f を押して、3 段階で First、Second、Third を見つけます。必要な範囲をアクティブなワークブックからそれぞれのシートの必要なワークブックにコピーします。
これにより、自動化されたコードを作成するために再構築できる記録されたマクロが得られます。後でコードを投稿できるかもしれません。コピーする必要がある範囲がわかるように、vba の行を追加して、2 番目と 3 番目を見つけるために使用されるセルの行番号を読み取る必要があります。
1 つの質問、ファイル内の列数は表示どおりですか????
ここにコードがあります。
Sub Macro1()
Dim startRow As Integer
Dim endRow As Integer
Dim wb As Workbook
Workbooks.OpenText Filename:="D:\file.txt", Origin:=437, startRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter _
:=True, Tab:=True, Semicolon:=False, Comma:=False, Space:=True, Other _
:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), _
TrailingMinusNumbers:=True
Set wb = ActiveWorkbook
Cells.Find(What:="FIRST", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
startRow = ActiveCell.Row + 1
Cells.Find(What:="SECOND", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
endRow = ActiveCell.Row - 1
Range("A" & startRow & ":D" & endRow).Copy
ThisWorkbook.Activate
Sheets("Sheet1").Select
Range("A1").Select
ActiveSheet.Paste
startRow = endRow + 2
wb.Activate
Cells.Find(What:="THIRD", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
endRow = ActiveCell.Row - 1
Range("A" & startRow & ":D" & endRow).Copy
ThisWorkbook.Activate
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
wb.Activate
startRow = endRow + 2
endRow = Range("A" & Rows.Count).End(xlUp).Row
Range("A" & startRow & ":D" & endRow).Copy
ThisWorkbook.Activate
Sheets("Sheet3").Select
Range("A1").Select
ActiveSheet.Paste
wb.Close (False)
End Sub