[実行時エラー'1004'アプリケーション定義またはオブジェクト定義エラー]が発生するが?
Question 80.6 拙著「組み方講座・プロの定番」 Previous Next
145ページ 3章2-5 合わせ技(1) ◆ 環境・・ Excel 2003 & Windows XP
詳細は こちら
本書の通りコード入力し、実行すると「実行時エラー'1004'アプリケーション定義またはオブジェクト定義エラーです」と表示されます。 (147ページ下から2行目の下記のところです)
   [領域.offset(1,0).Resize(領域.Rows.Count-1,領域.Columns.Count-2).Copy
   マスター.Range(コピー先セル).Pastespecial Paste:=xlValues]
・同一ブック内にマスターシートとトランスシートが有り、ブックが開いている状態です。
・この状態で、最初のマクロ・・「マスターとトランスを開く」は実行させないで、
・次のマクロ「マスターに無いデーターをアドバンスフィルターで抽出する」から実行させています。
どの様に解決すればよろしいでしょうか。

あと、トランスシートの「C列11行」目からデーターを抽出し、コピー先セルをマスターシートの「A列2行」目からにしたいのですが・・? よろしくお願いいたします。
Answer   Copyright (C) 2005.7.18 永井善王
拙著「ExcelVBAマクロ組み方講座 プロの定番・裏技・合わせ技[編]」をご購読、ありがとうございます。
145ページの合わせ技(1)は「トランザクションからマスターファイルにないデータを抽出して追加するマクロ」で、左図のように、

マスターとトランスの2つのファイルがある前提で、
トランスからマスターにないデータをアドバンスフィルタで抽出して、
そのデータをマスターの末尾に追加します。
(マクロは別のブックに保存されています)

ご質問は、マスターとトランスが同一ブック内にある場合、どうすればよいかですね。

こちらのページで「改造のご質問は有料になる場合があります、 別途ご相談ください」とご案内していますが、それほど大掛かりな改造ではないので、このままお答えを続けます。

が、私には、あなたが改造された内容が、「同一ブック内にマスターシートとトランスシートが有り開いている状態です」とだけしか分かりません。
つまり、そのことに関連するマクロコードをどのように変更したのかが不明です。

よって、ひとまず、ブックをあなた仕様に作り直してから、マクロコードを下記のとおり修正し、保存してください。

P.146の4行目 
Const ブック名m = "Book名.xls"   (あなたが付けたブック名にします)
P.146の5行目 
Const ブック名t = "Book名.xls"
P.146の7行目 
Const シート名t = "Sheet2"     (あなたが付けたシート名にします)
P.146の18行目のコード「マスターとトランスを開く」をコメントアウトするか削除する

くれぐれも、本のマクロはトランスを読み取り専用で開いて、そのSheet1上でマスターにないデータを抽出し、上書き保存しないで閉じるので、トランスのデータは元どおり残ります。
しかし、
あなたのように同一ブック上で行うと、トランスのデータは元どおり残りませんので、マクロを一度実行したあとで再実行すると、ご質問文にある実行時エラーになるかと思います。
修正後のマクロを試して、その結果をご連絡ください。 注意して進めてください。 お待ちしています。

 

Excel VBA Macro