マクロの条件を追加したいのですが
いつもお世話になります、MEGUMIと申します。
既存のマクロに更に条件を追加したいという質問をさせてください。
現在、フォルダの中にある全てのエクセルファイルを下記のような処理をしています。
●エクセルファイルの中の全てのSheetの1行目以降のA,B,C,G,H列をコピーしてマクロを動作させるエクセルファイルのSheet1に順次(A,B,C,D,E列)ペースト
※マクロは下記の内容( Sub 今日のわたし()以降です )です。
これに下記のような条件を追加したいのですがどのようにすればいいでしょうか?
○I列に”元気”という文字が存在していた場合に限って、その列のA,B,C,G,H,I列をコピーしてマクロを動作させるエクセルファイルのSheet1に順次(A,B,C,D,E,F列)ペースト
お忙しいところ大変恐れ入りますがもしご存知の方がいらっしゃりましたらご指導のほど何卒宜しくお願いいたします。
Sub 今日のわたし()
Dim XlFile As String
Dim MotoDataLastRow As Long
Dim CopySakiLastRow As Long
ThisWorkbook.Activate
Worksheets(1).Select
Cells.Clear
XlFile = Dir(ThisWorkbook.Path & "\*.xls?")
Do While XlFile <> ""
If XlFile <> ThisWorkbook.Name Then
Workbooks.Open ThisWorkbook.Path & "\" & XlFile, ReadOnly:=True
Worksheets(1).Select
MotoDataLastRow = Workbooks(XlFile).Worksheets(1).[A65536:H65536].End(xlUp).Row '元データファイルの最終行を取得
CopySakiLastRow = ThisWorkbook.Worksheets(1).[A65536:E65536].End(xlUp).Row 'インポート先の最終行を取得
If MotoDataLastRow > 1 Then
Range([A2], Cells(MotoDataLastRow, "C")).Copy ThisWorkbook.Worksheets(1).Cells(CopySakiLastRow + 1, "A")
Range([G2], Cells(MotoDataLastRow, "H")).Copy ThisWorkbook.Worksheets(1).Cells(CopySakiLastRow + 1, "D")
End If
Workbooks(XlFile).Close False
End If
XlFile = Dir()
Loop
End Sub
お礼
回答ありがとうございます! NOBNNNさんの回答を参考にテキストなどを見ながら作成してみたのですが…、 すみません、VBA超初心者で基本的な知識が足りないため詰まってしまいました。。。 フォームを作成までは出来たのですが、フォルダ選択がわかりません。 Dim Fs as Object DIm Fd as Object SET FS = CreateObject("Shell.Application") SET FD=fs.BrowsForFolder(0,"フォルダを選択してください。",&h1,&h0) ↑コードをフォルダ選択ボタン(CommandButton1,Click)にコピペしたのですが、実行してみると 「実行時エラー'438'オブジェクトは、このプロパティまたはメソッドをサポートしていません。」 と出てきてしまいます。 明日1日使って勉強しようと思いますが、よろしければ詳しくおしえていただけないでしょうか?