手を貸してください・・・。
手を貸してください・・・。 会社で今まで使用していたアプリ?みたいなものが廃止されてそれと同等の機能をExcelに持たせるためVBAを今必死こいて勉強していますが、全然わからないので有識者の方手を貸してください。 自分がいまVBAでやろうとしているのは、フォルダ内の複数ブックから条件を満たす行を別のブックに転記させたいのですが、画像のように大体で構文書いてみたんですけどf8キーで流してみたのですが、インデックスが有効範囲にありません。とエラーが出ます。(デバッグを押すと下記画像の部分が黄色) With Workbooks("File")のところで「File」にはブックを開いて処理をしたらブックを閉じて次のブックが入るように可変的にしたいのですが、WithWorkbooks("File")のFile部分が違う入れ方で入れなければいけないのかなと思っているのですがどうなんでしょうか。またプログラムをいくつか追加しなければいけないのでしょうか。ご教示願います。(できればVBA初心者なので嚙み砕いて説明いただけると助かります・・・。) Sub 別ブックからデータ転記2() Dim Path As String, File As String Path = "ここにはフォルダパスが入る。" File = Dir(Path & "\*.xlsm") Do While File <> "" 'Dir関数がファイル名を返さなくなるまで繰り返す。 Workbooks.Open Path & File '抽出 Dim i, j As Long i = 5 '機械部品5行目~〇探し j = 7 '新規7行目~貼り付け With Workbooks("File").Worksheets("機械部品") Do While .Cells(i, "B").Value <> "" '(i行,B列)が空白じゃないとき繰り返し If .Cells(i, "B").Value <> "" Then '(i行,B列)が空白じゃないとき下記実行 For x = 1 To 16 ThisWorkbooks.Cells(j, x).Value = .Cells(i, x + 2) Next x End If i = i + 1 Loop End With Workbooks.Close File = Dir '引き継いだ次のファイル名を返す Loop End Sub
Visual Basic | Excel・168閲覧
ベストアンサー
ID非公開さん
2022/1/14 17:19
>Path = "ここにはフォルダパスが入る。" >File = Dir(Path & "\*.xlsm") >Workbooks.Open Path & File 昨日と同じ事を繰り返してますよ。 上記3行では、 1行目では、フォルダ名が指定されている 2行目では、そのフォルダ名に「¥」が連結されて、マクロ付きエクセルを検索しようとしている 3行目では、パス名とファイル名を&で結合して、ファイルを開こうとしていますが、 C:\知恵袋 という名のフォルダ内に ヤフー.XLSM という名のファイルがあり、3行目の処理をすると Path & Fileは C:\知恵袋ヤフー.XLSM となります。 それを踏まえた上で >With Workbooks("File")のところで Fileは変数名であるので""で囲ってはなりません。 アナタは、ファイル名をFileという名の変数にしているのだから With Workbooks(File) としなければ、「Fileという名のWorkbooksで」という命令になります。 難しいことをいきなりせずに、 1行ずつ処理する仕組みで作成。 正常動作が確認出来たら、まとめられる箇所をまとめる。 という手順を踏むべきかと思います。
質問者からのお礼コメント
前回に引き続き、回答ありがとうございます!! また、わからないことが多発すると思うので、その時はよろしくお願いします。
お礼日時:1/17 10:51