前提・実現したいこと
テキスト形式のファイルの指定の単語から始まる行を取得、カンマ区切りで一時的に計算用シートに貼り付け、指定の単語を削除、昇順に並べ替え。
残った2列を別のシートに貼り付ける処理を行っています。
ファイル名が「~_01」のものは01のシートに、「~_03」のものは03のシートに貼り付けたいと考えています。
どこをどのように変更すればよいでしょうか。
独学の為分かりにくい部分もあるかと思いますが、よろしくお願いします。
該当のソースコード
vba
1Option Explicit 2 3Sub 抽出01() 4 5 Application.ScreenUpdating = False 6 Dim fso As Object 7 Set fso = CreateObject("Scripting.FileSystemObject") 8 Dim path 9 path = ThisWorkbook.path 'カレントディレクトリを取得 10 Dim sBuf As String 11 'テキストのフルパスを指定 12 With fso.GetFile(FilePath:=path & "\ファイル名_01").OpenAsTextStream 13 sBuf = .ReadAll 14 .Close 15 End With 16 17 Dim k As Long: k = 0 18 Dim p1 As Long: p1 = 1 19 Dim p2 As Long 20 Dim tmpBuf As String 21 Dim ary() 22 Do 23 p1 = InStr(p1, sBuf, "指定単語") 24 If p1 = 0 Then Exit Do 25 p2 = InStr(p1, sBuf, vbLf) 26 If p2 = 0 Then Exit Do 27 tmpBuf = Mid(sBuf, p1, p2 - p1) 28 p1 = p2 29 30 ReDim Preserve ary(k) 31 ary(k) = tmpBuf 32 k = k + 1 33 Loop 34 35 Range("A2").Resize(UBound(ary) + 1).Value = WorksheetFunction.Transpose(ary) 36 Application.ScreenUpdating = True 37 38 Dim myStr '引数1となる文字列 39 Dim Pref() As String '結果を格納する配列 40 Dim i As Long 'セル書き込み時のカウンタ変数 41 Dim j As Long 42 43 For j = 1 To Cells(Rows.Count, 1).End(xlUp).Row 44 myStr = Cells(j, 1) 45 46 Pref = Split(myStr, ",") 'Split関数実行 47 48 49'セルに書き写します 50 For i = 1 To UBound(Pref) 'カウンタ変数iは0から3まで 51 Cells(j, i + 1).Value = Pref(i) 'Cellsの行インデックスに注意 52 Next i 53 54Next j 55 56End Sub 57Sub unl転写01() 58 Dim endRow 59 endRow = Worksheets("計算用").Cells(Rows.Count, 1).End(xlUp).Row 60 Range(Cells(2, 2), Cells(endRow, 3)).Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _ 61 SortMethod:=xlPinYin 62 63 Worksheets("計算用").Range(Cells(2, 2), Cells(endRow, 3)).Cut Destination:=Worksheets("01").Range("A2") 64 Worksheets("計算用").Activate 65 Range(Cells(2, 1), Cells(endRow, 3)).ClearContents 66 67End Sub 68
試したこと
動きはするのですが、今の状態だと01、02、03とべた書きでコードを書かなければいけません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/04 07:04
2022/01/04 09:21
2022/01/04 11:38
2022/01/05 07:48