あるファイル内の複数ブックから特定のシートを抽出して、一つのブックに集約する(親ブックの末尾に貼り付ける)マクロを作っていますが、エラーになってしまいます。(私の力量では原因が特定できませんでした)
エラーの内容は、後ろから5行目の「fm.」の後の「Worksheets 」に対して「コンパイルエラー プロパティの使い方が不正です」というメッセージが出るものです。
Option Explicit
Sub 集計マクロ()
Dim fPath As String, fName As String, fm As Workbook
fPath = "C:¥Users¥nm¥Desktop¥マクロテスト¥"
fName = Dir(fPath & "¥**_test.xlsx")
fm = Dir(fPath & "¥集計マクロ.xlsm")
Do While fPath & fName <> ""
Workbooks.Open (fPath & fName)
ActiveWorkbook.Worksheets("sheet1"). _
CopyAfter: fm.Worksheets (Worksheets.Count)
ActiveWorkbook.Close SaveChanges:=False
fName = Dir()
Loop
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
#2です 見直しに来ましたら、、
脱線して、肝心な コンパイルエラー プロパティの使い方が不正です
の部分を書いていませんでした。(書いたつもりで・・)
fmはブックとして宣言されていますので
fm.Worksheets(Worksheets.Count)に問題がある訳ではなく
=が無い事が理由で
Worksheetsはコンパイルエラーが返ります(文法が間違っている)
単体で(意味はありませんが)
ActiveWorkbook.Worksheets (Worksheets.Count)
と書いた場合コンパイルエラーです
単体で
ActiveWorkbook.Worksheet
や
ActiveWorkbook.Worksheets (Worksheets.Count).Range
と書くと実行時エラーです(コンパイルできてしまう)
実行時エラーは
CopyAfter: や fm = Dir(fPath & "¥集計マクロ.xlsm")
(#2に挙げた部分)などがあります
オブジェクトによって コンパイルエラー、実行時エラー
構造などの絡みがあるのかも知れませんが、VBAはこの辺りが?と思います
良く見直せば自身で直せると思いますよ
No.2
- 回答日時:
こんばんは
サンプルコードはすでに回答されていますが
>エラーになってしまいます。(私の力量では原因が特定できませんでした)エラーの内容は、後ろから5行目の「fm.」の後の「Worksheets 」に対して「コンパイルエラー プロパティの使い方が不正です」というメッセージが出るものです。
いくつかの問題点があります
fm As Workbookはワークブックを示す変数宣言でオブジェクトになります
オブジェクト変数にオブジェクトを代入する場合
Set 変数 = オブジェクト とする必要があります
また、
Dir(fPath & "¥集計マクロ.xlsm")
Dir関数は対象フルパスにオブジェクトが存在するか調べる関数で
存在する場合は、対象オブジェクト(一番右書いた)を文字列で返します
無い場合は""が返ります
Sub test()
MsgBox Dir("C:¥Users¥nm¥Desktop¥マクロテスト" & "\集計マクロ.xlsm")
End Sub
> "¥**_test.xlsx"
ワイルドカードアスタリスクは任意数の文字なので1つで良いと思います
>fPath = "C:¥Users¥nm¥Desktop¥マクロテスト¥"
最後に¥付けていますが
これは、実行時エラーが返る事は無いでしょうけれど
"C:¥Users¥nm¥Desktop¥マクロテスト¥¥集計マクロ.xlsm"
となりますので一応指摘しておきます
一応の意図は、こちらを参考にしてください
https://oshiete.goo.ne.jp/qa/4971363.html
No.1
- 回答日時:
集計マクロ.xlsmに集計マクロが登録されていて、
この集計マクロ.xlsmの末尾に*_test.xlsxのsheet1を貼り付ける
ということで良いでしょうか。
その前提でよいなら、以下のようにしてください。
Sub 集計マクロ()
Dim fPath As String, fName As String, wb As Workbook
fPath = "C:\Users\nm\Desktop\マクロテスト\"
fName = Dir(fPath & "\*_test.xlsx")
Do While fName <> ""
Set wb = Workbooks.Open(fPath & fName)
wb.Worksheets("sheet1").Copy _
After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
wb.Close SaveChanges:=False
fName = Dir()
Loop
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 13:29
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- Excel(エクセル) このコードに追記事項の仕方を教えて下さい。 以下のコード内容に出てくる。セルH3が空白の場合、エラー 4 2023/08/03 00:22
- Access(アクセス) エクセルのマクロについて教えてください。 2 2023/02/03 16:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) Excel VBA でデータ転記について 1 2023/03/07 19:11
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル終了時の保存確認メッ...
-
コピーしたファイルのマクロを...
-
エクセルマクロにてパワーポイ...
-
エクセルの単票を一覧表に
-
別のパソコンでエクセルのマク...
-
excelファイルに使われているVB...
-
マクロを消すマクロは不可能?
-
マクロを設定したのに、拡張子...
-
エクセルファイルを自身のファ...
-
エクセルのマクロについて教え...
-
「開いているすべてのブック」...
-
エクセル2013vbaで、見えない名...
-
マクロでマクロを削除する
-
VBAを一度起動するとずっと出て...
-
秀丸で保存時のフォルダを固定...
-
作ったマクロが増えてきて、ど...
-
excelが別プロセスで起動してし...
-
アクセスでファイルを開いたと...
-
Excel2003 個人用マクロ...
-
Excelが勝手にシート移動してし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル終了時の保存確認メッ...
-
VBA マクロ実行時エラー’1004Ra...
-
VBAを一度起動するとずっと出て...
-
別のパソコンでエクセルのマク...
-
コピーしたファイルのマクロを...
-
マクロを消すマクロは不可能?
-
昨日まで動いていたエクセルの...
-
エクセルファイルを自身のファ...
-
エクセル2013vbaで、見えない名...
-
Excelマクロ ファイル名が変わ...
-
エクセルマクロ実行中に別ファ...
-
excelファイルに使われているVB...
-
Excelが勝手にシート移動してし...
-
Word用のマクロが急に働かなく...
-
EXCEL マクロ クリップボードク...
-
【マクロ】エラーが発生⇒実行時...
-
excelが別プロセスで起動してし...
-
エクセルマクロを有効にしない...
-
アクセスでファイルを開いたと...
-
excelでpersonal.xlsを常に開く...
おすすめ情報