オートフィルタで抽出したデータをコピー貼り付けするとエラーが出るが?

Question 60.95 Excel VBA Borad (掲示板)より Previous Next
誰か教えて下さい! マクロの記録を使ってボタンに登録したのですが、 Paste'メソッドは失敗しました'_Worksheet'オブジェクト と出て実行されないのですが、どうしてでしょう?
Sub 下位50()
'
' 下位50 Macro
' マクロ記録日 : 2003/7/2 ユーザー名 : '
'
    Range("P4").Select
    Selection.AutoFilter
    ActiveWindow.ScrollColumn = 20
    ActiveWindow.ScrollColumn = 19
    ActiveWindow.ScrollColumn = 18
    ActiveWindow.ScrollColumn = 17
    ActiveWindow.ScrollColumn = 16
    ActiveWindow.ScrollColumn = 15
    ActiveWindow.ScrollColumn = 14
    ActiveWindow.ScrollColumn = 13
    ActiveWindow.ScrollColumn = 12
    ActiveWindow.ScrollColumn = 11
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 11
    ActiveWindow.ScrollColumn = 12
    ActiveWindow.ScrollColumn = 13
    Selection.AutoFilter Field:=15, Criteria1:="50", Operator:= _
    xlBottom10Items
    Range("B3:P900").Select
    Selection.Copy
    ActiveWindow.ScrollRow = 876
    ActiveWindow.ScrollRow = 873
    ActiveWindow.ScrollRow = 867
    ActiveWindow.ScrollRow = 862
    ActiveWindow.ScrollRow = 66
    ActiveWindow.ScrollRow = 58
    ActiveWindow.ScrollRow = 51
    ActiveWindow.ScrollRow = 45
    ActiveWindow.ScrollRow = 42
    ActiveWindow.ScrollRow = 36
    ActiveWindow.ScrollRow = 33
    ActiveWindow.ScrollRow = 27
    ActiveWindow.ScrollRow = 23
    ActiveWindow.ScrollRow = 18
    Sheets("並び替えの抜き出し").Select
    Range("B3").Select
    ActiveSheet.Paste ←ここが黄色になる
    Range("A1").Select
    Sheets("生産管理表(毎日電装)").Select
    Range("A1").Select
    Application.CutCopyMode = False
    Selection.AutoFilter
End Sub
Answer   2003.7.2 もてもて
こんにちは、もてもてです。 動かしてみましたが、動きましたよ。 とりあえず不要そうな所と、止まってしまうPaste文を削除してみました。 下記のとおりで どうでしょう?
Sub 下位50()
    Range("P4").AutoFilter Field:=15, Criteria1:="50", Operator:= _
    xlBottom10Items
    Range("B3:P900").Copy Sheets("並び替えの抜き出し").Range("B3")
    Sheets("生産管理表(毎日電装)").Select
    Range("A1").Select
    Selection.AutoFilter
End Sub
「Copyメソッドは失敗」エラーが出るが      
どうもお久しぶりです。 もてもてさん 早速コピーして使ったのですが、データ1.5Mもあるから なのか今度は'Copy'メソッドは失敗しました'Range'オブジェクト とでました。 いったい何が原因なのでしょう?
Answer   もてもて
???何故でしょう。 そもそも、最初のコードも私が試したかぎりではちゃんと動きましたし・・・。 データ量は関係無いと思います。 どうにも、分かりかねます。 (それとも、私のコードがヘナチョコ??) どなたか、分かる方いらっしゃいませんか?
Answer   long
横からすみません。Copyメソッド失敗エラーは、4行目のコードの後半を削除すれば解決するかと。ところで、
 ・ "並び替えの抜き出し"シートが保護されているようなことはありませんか?
 ・ どんなエラーメッセージが表示されましたか? それを示されると解決がより早いかと。
余計なことですが、抜き出したデータだけをコピーしたいのであれば Range("B3:P900").Select の代わりに、
Selection.CurrentRegion.Select(アクティブセル領域を選択) とされると良いかと。参考までにまとめておきます。
Sub 下位50項目_参考()
    Sheets("生産管理表(毎日電装)").Select
        Range("P4").Select
        Selection.AutoFilter
        Selection.AutoFilter Field:=15, Criteria1:="50", Operator:= _
            xlBottom10Items
        Selection.CurrentRegion.Select
        Selection.Copy
    Sheets("並び替えの抜き出し").Select
        Range("B3").Select
        ActiveSheet.Paste
    Sheets("生産管理表(毎日電装)").Select
        Range("A1").Select
        Selection.AutoFilter
End Sub
「「Pasteメソッドは失敗」エラーが出る、誰かチェックして欲しい      
longさん どうもはじめまして! ご教示いただいたマクロで試したのですが、
実行時エラー '_2147417848 (80010108)':'Paste'メソッドは失敗しました'_Worksheet'オブジェクト と出て
ActiveSheet.Paste ←ここが黄色になる状態なんです。
データがどっか壊れているのでしょうかね? 誰かにデータチェックしてほしのですが、そんな事ってできますか。
チェックしてもいいですよ 永井善王
このHPのWeb Masterです。 お困りのようですからチェックしてもいいですよ。ただし、1.5Mのままでは困ります。必ず圧縮したものをメールに添付して送信ください。
宜しく御願いします      
はじめましてWeb Masterさん。 弊社にて生産管理を開始(時代遅れですが)しようと、エクセルで簡易的に作成している段階なのですが、前までうまくいっていたのに項目やリンクを増やしたりしてるうち、データがなんかよく分からない状態になって お手上げ状態なので、どうか宜しく御願い致します。
Answer  Excel 2002 Copyright (C) 2002.7.7 永井善王
再現テストをしてみました。ご使用中のExcelのバージョンは 2002(10.2614.2625)でしょうか? そうだとすれば確かに「Pasteメソッドは失敗」エラーが出ますね。
まったく貼り付けされないのではなくて、表頭部(B3:Y4セル)は貼り付けられていて、オートフィルタされたデータ部(B4:Y54セル)が貼り付いていません。 仕方ないのでエラーをリセットしてからブックを閉じ、Excelを終了すると砂時計マークになったままで終了しませんでした。Excel97と 2000では、まったく問題ないのに何か変です。
よって、もしかしたら Excel2002の不具合ではないかと考え、マイクロソフト社の「サポート技術情報(Knowledge Base)」のページ で検索してみましたが、Excel2001での類似例があるだけで、ズバリのものは見つけることができませんでした。

対処方法
コピー元のワークシートを拝見しましたが、他のブックにリンクしているセルがいっぱいあります。 断定できませんが、Excel2002がうまく貼り付けできない原因になっているかもしれません。

対処方法として、Pasteメソッド(貼り付け)の代わりに、PasteSpecialメソッド(形式を選択して貼り付け)に変えることにしましょう。 ついては下図のとおり、表頭部分に結合セルが2カ所ありますが、
PasteSpecialメソッドでは支障がありますから、[選択範囲内で中央]に変えておきます。

こうするための操作方法がわからない場合は、上図を参考にしてください。
そして、マクロを下記のとおり修正します。
'-------------------------------------------------------------------------------
Sub 下位50項目_対策済み()
    Sheets("生産管理表(毎日電装)").Select
        Range("P4").Select
        Selection.AutoFilter
        Selection.AutoFilter Field:=15, Criteria1:="50", Operator:= _
            xlBottom10Items                     'オートフィルタで下位50を抽出する
        Selection.CurrentRegion.Select          'アクティブセル領域を選択する
        Selection.Copy                          'コピーする
    Sheets("並び替えの抜き出し").Select
        Range("B3").Select
        Selection.PasteSpecial Paste:=xlPasteFormats '書式を貼り付ける
        Selection.PasteSpecial Paste:=xlPasteValues  '値を貼り付ける
    Sheets("生産管理表(毎日電装)").Select
        Range("A1").Select
        Selection.AutoFilter
End Sub
'------------------------------------------------------------------------------
なお、「並び替えの抜き出し」シートをよく見ると S57、T57、U57セルの下縁にそれぞれ(オートシェイプの)直線が6または12本づつ、ぴったりと重なって描かれています。本題とは無関係と思われますが、不要ならば消しておきましょう。

Excel VBA Macro