
あるファイル内の複数ブックから特定のシートを抽出して、一つのブックに集約する(親ブックの末尾に貼り付ける)マクロを作っていますが、エラーになってしまいます。(私の力量では原因が特定できませんでした)
エラーの内容は、後ろから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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Excel マクロで For 文のインデックスを先に宣言する理由
Excel(エクセル)
-
Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、
Visual Basic(VBA)
-
マクロのコードを、少しでも削って短くしたい
Excel(エクセル)
-
4
Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい
Excel(エクセル)
-
5
excelの数式の書き方について。 以下のような数式をSheet1に書いています。 Sheet1のB
Excel(エクセル)
-
6
エクセル VBA For Next 繰り返しの書き方を教えてください
Excel(エクセル)
-
7
Countifよりも早く重複数をカウントする方法ありますか?
Excel(エクセル)
-
8
重複したデータ(空白は除く)のVBA表記について
Excel(エクセル)
-
9
Excel VBA 大量のレコードからある列の重複数をカウントする方法?拡張編
Visual Basic(VBA)
-
10
【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在
Excel(エクセル)
-
11
【至急】マクロのカードの書き方を教えてください
Excel(エクセル)
-
12
【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい
Excel(エクセル)
-
13
VBAで、㉑という数値が、正しく、入力できない
Excel(エクセル)
-
14
マクロ セルの選択
Excel(エクセル)
-
15
【VBA】印刷マクロのループ処理が反映されません
Visual Basic(VBA)
-
16
エクセルデータからの必要項目抽出方法を教えてください
Excel(エクセル)
-
17
記録マクロのみでできますか?
Excel(エクセル)
-
18
Excel Powerクエリーの質問、行数指定は可能でしょうか?
Excel(エクセル)
-
19
Excelマクロ(VBA)CELL形式とA1形式の使い分け
Excel(エクセル)
-
20
エクセルの住所から郵便番号を表示するには
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
マクロ実行後元に戻すことは
-
5
Accessのクエリを実行するショ...
-
6
Excelのワークシート上に検索窓...
-
7
複数ファイルにある特定のシー...
-
8
EXCELのセルへ、デジタル時計を...
-
9
エラーになってないのにVBA...
-
10
エクセルで土日列の非表示方法...
-
11
Excelを開いた時に表示さ...
-
12
エクセル 自動で別シートへ並...
-
13
マクロボタンを作ってのマクロ...
-
14
Excel2000 データの並べ替えで...
-
15
ワードマクロで画像を選択する方法
-
16
エクセルに画像を貼付け縮小す...
-
17
Excelマクロでオプションボタン...
-
18
エクセルのマクロでワードのマ...
-
19
Excel文字列中の太字(Bold)部分...
-
20
EXCEL2000 VBA マクロ実行中に...
おすすめ情報
公式facebook
公式twitter