質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

解決済

vbaで複数のテキストファイルを読み込んで同じ処理を行い、ファイル名に合わせたシートに貼り付けたいです。

kanata0214
kanata0214

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

2回答

0評価

0クリップ

317閲覧

投稿2022/01/04 05:07

前提・実現したいこと

テキスト形式のファイルの指定の単語から始まる行を取得、カンマ区切りで一時的に計算用シートに貼り付け、指定の単語を削除、昇順に並べ替え。
残った2列を別のシートに貼り付ける処理を行っています。
ファイル名が「~_01」のものは01のシートに、「~_03」のものは03のシートに貼り付けたいと考えています。
どこをどのように変更すればよいでしょうか。
独学の為分かりにくい部分もあるかと思いますが、よろしくお願いします。

該当のソースコード

vba

Option Explicit Sub 抽出01() Application.ScreenUpdating = False Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim path path = ThisWorkbook.path 'カレントディレクトリを取得 Dim sBuf As String 'テキストのフルパスを指定 With fso.GetFile(FilePath:=path & "\ファイル名_01").OpenAsTextStream sBuf = .ReadAll .Close End With Dim k As Long: k = 0 Dim p1 As Long: p1 = 1 Dim p2 As Long Dim tmpBuf As String Dim ary() Do p1 = InStr(p1, sBuf, "指定単語") If p1 = 0 Then Exit Do p2 = InStr(p1, sBuf, vbLf) If p2 = 0 Then Exit Do tmpBuf = Mid(sBuf, p1, p2 - p1) p1 = p2 ReDim Preserve ary(k) ary(k) = tmpBuf k = k + 1 Loop Range("A2").Resize(UBound(ary) + 1).Value = WorksheetFunction.Transpose(ary) Application.ScreenUpdating = True Dim myStr '引数1となる文字列 Dim Pref() As String '結果を格納する配列 Dim i As Long 'セル書き込み時のカウンタ変数 Dim j As Long For j = 1 To Cells(Rows.Count, 1).End(xlUp).Row myStr = Cells(j, 1) Pref = Split(myStr, ",") 'Split関数実行 'セルに書き写します For i = 1 To UBound(Pref) 'カウンタ変数iは0から3まで Cells(j, i + 1).Value = Pref(i) 'Cellsの行インデックスに注意 Next i Next j End Sub Sub unl転写01() Dim endRow endRow = Worksheets("計算用").Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(2, 2), Cells(endRow, 3)).Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _ SortMethod:=xlPinYin Worksheets("計算用").Range(Cells(2, 2), Cells(endRow, 3)).Cut Destination:=Worksheets("01").Range("A2") Worksheets("計算用").Activate Range(Cells(2, 1), Cells(endRow, 3)).ClearContents End Sub

試したこと

動きはするのですが、今の状態だと01、02、03とべた書きでコードを書かなければいけません。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。