• 締切済み

フィルター可視データのCSV出力について

いつも助けてもらっています。 EXCELのVBAにて、 タイトル等の不要な行を削除した上で、 データが入っている行全てをCSVファイルに出力する マクロを作って使っています。 全件をそのままCSVファイルに出力するのは問題ないのですが、 オートフィルター(手操作)にてヒットしたデータのみを CSVファイルに出力したいです。 ネットでいろいろと調べると、 可視データを他のシートにコピーして・・・やる、 というやり方しか見つかりませんが、 他のシートにコピーしないで行う方法はないですか? (マクロで実行する場合です) もし可能であるならば・・・ コードの記述でなくても、 こんなやり方・・・とか、 どこか参考になる情報でもリンクしてもらえると 助かります。 よろしくお願い致します。

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

少々昔の回答ですが... http://okwave.jp/qa/q4134222.html vbTabを、","に替えればCSVに書き出せると思います。 なお、 area.Cells(i, j).Text を用いると、通常のCSV同様、画面に表示された桁数で出力され、 area.Cells(i, j).Value にすると、セルに入っている桁数全てが出力されたと記憶してます。 シート名をファイル名にするには、 Call saveToText(extractedRange, ThisWorkbook.Path & "\" & "test.txt") の"test.txt"を、Activesheet.Nameにすれば良いでしょう。 ご参考まで。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>他のシートにコピーしないで行う方法はないですか? エクセルのフィルタはシートの行を非表示にするだけ(復活が必要だからだろう)だが、可視セルを選択する方法があり、他シートに貼り付ければ、CSVで保存するのもたやすいとおもう。なぜ質問者が、他の方法が良くわからないのに、他シートにコピーをすることを避けるのか。質問者のわがままで、自分にその力が無ければ、自分のできる範囲でやるのが当たり前だと思うが。 ーー ただ上記以上にプログラム力が要ると思うが、条件による行選択を、エクセルのフィルタを使わず、自作することをすれば、検索結果とか抜き出した都度、CSVファイルに書き出すことは出来ると思う。 レコード処理的にテキストやCSVファイルを書き出すコード作成の経験はあるのですか。 Googleで「エクセル CSV VBA」で照会すれば、まずはじめに出てきた、 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_050.html などに、使えるコードがでている。こんな照会することもしないで質問するのは、要領を知らない。 ーー その際全行処理のくり返しの各行において、IFステートメントで条件をかければよい。 このほうほうは決してスマートな方法ではないが、ッそれ以上の方法を考えるのはもっとFindメソッドのことなど勉強してからだ。 == 上記の本筋とは別に、下記は何とかできそうだが、際どい。 フィルタ実行後のシートデータに対し Sub test03() Range("A2").CurrentRegion.SpecialCells(xlCellTypeVisible).Select For Each cl In Selection If cl.Column = 1 And Not cl.Row = 1 Then MsgBox Left(s, Len(s)-1) '実際はこのsをテキストファイル書き出しする s = "" End If s = s & cl & "," Next MsgBox Left(s, Len(s-1)) End Sub

回答No.1

こんばんは。 マクロでやるなら、他のシートにコピーしても 処理後にそのシートを削除することもできます。 だから何が問題なのかと思ってしまいます。

関連するQ&A