![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
下記VBAにてシートごとCSVに変換し特定のフォルダーに指定ファイル名で保存しているのですが、
B列の空行を削除をしたデーターをCSV保存したいのですが、VBAの記述をご教授ください
ファイル名・フォルダーは固定で構いません
よろしくお願いいたします
Sub ボタン1_Click()
Application.DisplayAlerts = False
Sheets("商品.csv").Copy
ActiveWorkbook.SaveAs Filename:="Z:\DATA\商品.csv", _
FileFormat:=xlCSV
ActiveWindow.Close
Application.DisplayAlerts = True
End Sub
![「フィルターをかけてCSV保存をVBAで」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/a/937992_5d5b32df5883a/M.png)
No.4ベストアンサー
- 回答日時:
>別シートにコピーしても空欄と認識しないようです。
値コピーすれば、"" (長さ0の文字列)は消えますが、オリジナルをいじることはできないはずですし、Copy , 再び、値コピーを繰り返すのは手間が多すぎます。No.1さんのご指摘の通りなのですが、さて、マクロのコードにしてみると、少しややこしいです。
Sheets("商品.csv").Copy
この「必殺の」一行を活かすために、全体の方法が決まってしまいます。しかし、元からすると、なんとも冗長になってしまいます。それとも、私のコードの問題なのかな?
'//標準モジュール
Sub ExportCSV()
Dim orgSh As Worksheet
Dim ValueArea As Range
Dim shName As String
Dim wb As Workbook
Const myPATH As String = "Z:\DATA\" '行末は必ず、¥。
Set orgSh = ActiveSheet
With orgSh
shName = .Name
.AutoFilterMode = False
Set LastCell = .UsedRange.SpecialCells(xlCellTypeLastCell)
Set ValueArea = .Range("A1", LastCell)
ValueArea.AutoFilter
.AutoFilter.Range.AutoFilter _
Field:=2, _
Criteria1:="<>" '空白行を取る
.Copy
Set wb = ActiveWorkbook
End With
With wb
With ActiveSheet
.AutoFilterMode = False
.UsedRange.ClearContents
ValueArea.Copy .Range("A1") 'ここが重要
End With
.SaveAs myPATH & shName , xlCSV '保存
.Close False
End With
ActiveSheet.AutoFilterMode = False
End Sub
No.3
- 回答日時:
No2です
>別シートにコピーしても空欄と認識しないようです。
あらそうでしたか・・・
関数の計算結果となると、空白表示のセルをを実際の空白に置き換えるしかないので、
For Each c In Intersect(ActiveSheet.UsedRange, Columns(2))
If c.Value = "" Then c.ClearContents
Next c
とか。
でも、こんな手間をかけているようなら、最初にご質問の通りフィルターで処理する方が簡単になって来ちゃいますね。
ActiveSheet.UsedRange.AutoFilter Field:=2, Criteria1:="<>"
で済むはずですので。
No.2
- 回答日時:
こんにちは
処理順序を変えれば(先に別シートへコピー)、フィルターをかけなくとも、空行を削除しても問題ないでしょうから・・・
Rows(1).Insert
Columns(2).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
とかでもよさそう。
(Insertはエラー回避のおまじないです)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) vbaマクロについて 【1.csv】をもとに【商品.csv】に有るものを【有り.csv】として名前を 1 2023/05/18 07:58
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Visual Basic(VBA) vbaマクロについて シート1のA列にある商品コードが シート2のB列にある商品コードに該当する場合 2 2023/05/17 13:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
エクセルで、抽出したデータだけを別ファイルにしたい
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
VBとアクセスでSQL文に変数を使いたいのですが
Visual Basic(VBA)
-
-
4
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
5
Excel:任意の列だけCSV形式で出力したい。
Excel(エクセル)
-
6
【ExcelVBA】300万件越えCSVから条件を満たす行だけ抽出するには?
Visual Basic(VBA)
-
7
【ExcelVBA】各セルをダブルクォーテーションで括ってCSV保存したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
EXCELで別のブックから式をコピ...
-
【Excel】数式をそのまま他のシ...
-
JWWのショートカットキーが使え...
-
Excelの行をコピーして貼り付け...
-
【VBA】コピー&複数個所のペー...
-
【Excel VBA】シートコピー時、...
-
Excel Selectは使わない? VBA
-
【VBA】コピー&複数個所のペー...
-
エクセルのページをシートごと...
-
EXCEL2007でシートをコピーする...
-
エクセルの1シートの内容を複...
-
VBAでマクロを組んでいますが、...
-
[EXCEL]シートを一つにまとめる...
-
Excel 違うBookのシートをコピ...
-
Excel シート複数 金額日計表と...
-
エクセルマクロで上書きして貼...
-
エクセルシートを別のエクセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 関数を使ってデータと一...
-
エクセルの選択範囲以外を削除...
-
EXCELのVBAでシートコピーをし...
-
EXCELで別のブックから式をコピ...
-
【Excel】数式をそのまま他のシ...
-
【VBA】コピー&複数個所のペー...
-
Excelの行をコピーして貼り付け...
-
CSVファイルについて質問です。
-
【エクセル】プルダウン設定の...
-
Excel シートのコピーの際、ペ...
-
Excel 数式の保護をしたセルを...
-
【Excel VBA】シートコピー時、...
-
エクセルの1シートの内容を複...
-
ExcelVBAで、ユーザーフォーム...
-
Excel シートに別のExcelシート...
-
シートが保護されていないのに...
-
PDFファイルをコピーしてエクセ...
-
エクセルシートを別のエクセル...
-
エクセルVBA 1行飛ばしで転記す...
-
エクセルでシートを「移動また...
おすすめ情報
fujillin 様
早々のご教授ありがとうございます。
説明不足で申し訳有りません
サンプル表の空欄には =IF(Sheet1!A1="","",Sheet1!B1) のように式が記載されていて
別シートにコピーしても空欄と認識しないようです。
式を消して試すと確かに行は削除されています。
式の記載があっても削除するように出来ないでしょうか
よろしくお願いいたします。