Excelマクロでオートフィルターからコピペ

このQ&Aのポイント
  • Excelマクロでオートフィルターを使用して、B列の0以外の値を抽出し、別のファイルのD列の一番下に貼り付けるマクロを作成しています。
  • フィルターで0以外の値を抽出してコピーするまでは成功していますが、貼り付けるところでエラーが発生しています。
  • エラーメッセージは「Microsoft Visual Basic 400」と表示されており、原因がわかりません。詳しい方に助けていただきたいです。
回答を見る
  • ベストアンサー

Excelマクロでオートフィルターからコピペ

ファイルのB列の値から0以外の値をオートフィルターで抽出し、値を、別のファイルのD列の一番下に貼りつけるマクロを作っていますがうまくいきません。 今作ったのは Sub macro1() If ActiveSheet.AutoFilterMode = False Then Range("A:G").Select Selection.AutoFilter Else Selection.AutoFilter Range("A:G").Select Selection.AutoFilter End If Selection.AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd Range("A1").Select Range("B2", Range("B2").End(xlDown)).Select Selection.Copy Windows("貼りつけるファイル名").Activate Cells(Rows.Count, 4).End(xlUp).Offset(1).Select ActiveSheet.Paste End Sub です。 フィルターで0以外の値を抽出しコピーまではできていますが、貼りつけるところでエラーがでます。 Microsoft Visual Basic 400 というエラーです。 何が悪いのか分かりません・・・。 分かる方いましたらご教授ください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! お役に立てるかどうか判りませんが・・・ 貼り付けるBookのSheetを指定してはどうでしょうか? >Windows("貼りつけるファイル名").Worksheets("sheet1").Activate といったような感じで。 的外れならごめんなさいね。m(_ _)m

shosho2222
質問者

補足

返答ありがとうございます。 やってみましたが、駄目でした・・・。

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

Windows("貼りつけるファイル名.xls").Activate のように拡張子を入れたらどうなりますか? (2007以降なら拡張子も変わっていますが。)

shosho2222
質問者

補足

すいません、元のコードには拡張子は入っています。 分かりやすく変えたつもりだったのですが…。

関連するQ&A

  • オートフィルタ マクロについて

    質問です。 オートフィルタで複数列を1つの条件で抽出したいのですが、教えてください。 たとえばA列が納品書No.・B列が受注No.・C列が商品No.なのですがすべて数字の為、出来ればInBox一回でA-C列を検索してほしいです。 指定納品書NO 受注NO 元品番 21812 3252608 77 21880 3307989 32B 22053 3389769 95414A 22050 3389770 67312H 22052 3389771 67312H 22050 3389773 67118H 以下の様なマクロを作ってみましたが、 A-C列全てに一致しないと抽出しないようです。 どなたかご教授いただけないでしょうか? マクロ '条件1 の設定 Dim 検索NO As Variant '抽出キーの入力指示 検索NO = InputBox("検索NOを入力てください。") 'キャンセルした場合の処理 If 検索NO = Empty Then Exit Sub End If 'オートフィルタがかかっていなかったらかける 'かかっていたら念の為一度解除し再設定 If ActiveSheet.AutoFilterMode = False Then Range("A2:O2").Select Selection.AutoFilter Else Selection.AutoFilter Range("A2:O2").Select Selection.AutoFilter End If Selection.AutoFilter Field:=1, _ Criteria1:=">=" & 検索NO, Operator:=xlAnd, Criteria2:=" " & 検索NO Selection.AutoFilter Field:=2, _ Criteria1:=">=" & 検索NO2, Operator:=xlAnd, Criteria2:=" " & 検索NO2 Selection.AutoFilter Field:=3, _ Criteria1:=">=" & 検索NO3, Operator:=xlAnd, Criteria2:=" " & 検索NO3 AutoFilterMode = False Application.ScreenUpdating = True End Sub よろしくお願いいたします。

  • オートフィルター VBAでの設定について

    オートフィルターで0以外のものに絞って、 コピーしたいのですが、 値が0しかない場合にすべてのものをコピーするように なってしまうので、 コピーすることがないようにさせたいです。 例) Sub test() Sheets("Sheet1").Select Selection.AutoFilter ActiveSheet.Range("$A$2:$A$10").AutoFilter Field:=1, Criteria1:="<>0" Range("A2:A10").Select Range(Selection, Selection.End(xldown)).Select Selection.Copy End Sub このようなコードの場合にA2:A10の値が0しかなかった場合に コピーしている状態をなくしたいのですが、 どこのコードを変えたらいいでしょうか。 回答よろしくお願いいたします。

  • マクロ オートフィルタで困っています。

    マクロ オートフィルタで困っています。 1列目と2列目からそれぞれ条件をフィルタで抽出し、抽出された行を削除するマクロを組んだのですが(下記)、Bの条件が表にない場合に2行目から下が全て削除されてしまいます。 元の表は毎週変わるため、抽出する条件があるかないかはその時次第です。 オートフィルタにこだわってはいませんが、その他の抽出方法もいまいち分からず……。 どのようにすればよいのか、教えていただけますでしょうか。 宜しくお願い致します。 <マクロ> Sub Macro() Selection.AutoFilter Field:=1, Criteria1:="A" Selection.AutoFilter Field:=2, Criteria1:="B", Operator:=xlAnd Dim gyou(1) As Long gyou(0) = 2 gyou(1) = Range("A1").CurrentRegion.Rows.Count Rows(gyou(0) & ":" & gyou(1)).Select Selection.Delete Shift:=xlUp End Sub

  • Excelマクロ オートフィルタ可視領域の特定部分をコピー

    何方か、回答をお願いします。 下記もマクロは 、B列:C列(B1:C1はタイトル)をオートフィルタに掛けて フィルタに掛かった一番上のデータをコピーして貼り付けているマクロですが。 やりたいことは、B1:C1のタイトルとフィルタに掛かった可視領域の一番上の データ(オートフィルタに引っかからないでデータが無い場合も有り)をコピー して貼り付けたいのですがどの様なコードを書けば良いのでしょうか。? Sub フィルタ() Range("B1:C1").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:=">=1e-6" Range("B1").CurrentRegion.Select On Error Resume Next Selection.SpecialCells(xlCellTypeVisible).Areas(2).Rows(1).Select Selection.Copy Range("K15").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFilter End Sub

  • オートフィルタのマクロについて

    オートフィルタのマクロを組もうとしているのですが、フィルタ条件に別シートのセルの値を入れたいのですが、そこがどうもうまくいきません。 作成したマクロは以下の通りです。 Sub 累計計算マクロ() Dim aRange As Range, bRange As Range, i As Date Set aRange = Sheets("累計").Range("B1") Set bRange = Sheets("累計").Range("B2") i = aRange.Value Sheets("クイーンエステート").Activate Range("A13:L13").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:="<=i", Operator:=xlAnd End Sub どなたか助けてください! 宜しくお願い致します。

  • コンボボックスとオートフィルタの連動

    データの件数が増えてきたので、コンボボックスで選択した項目を一発で表示させるマクロを組みたいと思います。 前提は以下の通りです。 Webからの受け売りというか、書かれていた通りにやってみたのですが動作しません。どこが間違っているのでしょうか。 また、他にも方法があるようでしたらお知恵をお貸し下さい。 +++ マクロを実行させたいシートにはA3からK3までの項目があります。 そのうち、B3の項目でフィルタをかけたいです。 1.マクロを実行するシートとは別に「マスター」というシートを作成。 そこにコンボボックスにリンクさせる項目を入力。(A3:A16) セルC1にINDEX関数を置き、(A3:A16)のそれぞれの値を文字に変換。 2.その変換した文字を変数に格納 3.もし、空白を選択してしまったら、マクロから抜ける 4.オートフィルタのセットは、既にセットされていたら一旦解除し再度セット。 5.変数に格納した文字をキーにして、オートフィルタで抽出する。 +++ Sub Combo_AutoFilter() Application.ScreenUpdating = False '変数宣言 Dim 選択項目 As Variant Dim 実行シート名 As Variant '現在のシート名の格納 実行シート名 = ActiveSheet.Name '選択項目の格納 Sheets("マスター").Select 選択項目 = Cells(1, 3) If 選択項目 = Empty Then Sheets(実行シート名).Select Exit Sub End If 'オートフィルタのセット Sheets(実行シート名).Select If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter Range("A3:K3").Select Selection.AutoFilter Else Range("A3:K3").Select Selection.AutoFilter End If 'オートフィルターで選択 Selection.AutoFilter Field:=2, Criteria1:=選択項目 Range("A3").Select End Sub +++

  • エクセルVBAで5行目からオートフィルタモードに設定したいたい

    抽出項目が5行目にあり、オートフィルタを5行目から表示させたいのですが、うまくいきません。 Macro1では項目が消えてしまい、▼が1行目に、Macro2では項目は残りますが、▼は同じく1行目になってしまいます。どうしたら5行目にオートシェイプの▼が配置できるでしょうか? Sub Macro1() Range("A5").Select Selection.AutoFilter End Sub Sub Macro2() Range("A5").AutoFilter End Sub

  • EXcelオートフィルタのオプション設定で条件として変数をマクロで組むには?

     オートフィルタ機能を使い、指定期間内のデータを抽出するようにマクロを組みたい。指定期間が一定ではないので変数を設定したいのですがうまくいきません。下記はマニュアルで入力したものをマクロに記録したものです。指定期間は他のBookのセルに入力画面として設けてあります。例えばBook2/B1(開始)~B2(終了)。 Range("A1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:=">=2005/8/21", Operator:=xlAnd _ , Criteria2:="<=2005/9/20" Range("C1").Select End Sub

  • オートフィルタの指定の値以上抽出マクロについて

    VBA初心者です。 よろしくお願いします。 オートフィルタの指定の値以上を抽出するマクロを作りたいのですが、 うまくいきません。 内容は、Sheet1のB6にSheet2のA2の値を代入し A列のA2の値以上の抽出をしたいのですが、Seet1のB2の5000は抽出されるのに どうしてもB6に代入した5000の値が抽出されません。 自分なりにマクロ記録を少しいじってつくったのですが。。。 Sub aa() ' Dim a As Integer a = Sheets("Sheets2").Range("A2").Value Range("B6").Select ActiveCell.FormulaR1C1 = a ActiveSheet.Range("$A$5:$FX$307").AutoFilter Field:=4, Criteria1:=">" & a _ End Sub B6の5000の値は他の数値とは異なる扱いになっているようです。 Sheet1 .......A......... B..........C............D 1 数値|数値2|数値3|数値4 2 5000...1000 3 2000.. 2000 4 3000...3000 5 4000...4000 6 5000..←-----(抽出されない) Sheet2 .......A 1  値  2 5000 3 0 素人のため、説明もうまくできませんが、わかる方どうぞご指導願います。 使用しているのはEXCEL2007です。

  • オートフィルタをかけるマクロ

    A12からA50に表示されている内容でB列にオートフィルタをかけ、印刷をする というマクロですが、 Selection.Autofilter field:=2, Criteria1:=Range("A12") Activesheet.Printout を39回コピーし、"A12"の部分を"A13"............"A50"に変えていきました。 本当はもっとスッキリできると思うのですが、そこがまだよくわかりませんので どなたか教えていただけないでしょうか。 A列は必ず50までデータがあるとは限りません。 エクセル2003使用の初心者です。 よろしくお願いします。

専門家に質問してみよう