[[20230411201838]] 『指定範囲のCSV出力』(のん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『指定範囲のCSV出力』(のん)

お世話になります。
シート"集金計画”のA6:W30を範囲指定して、新規ブックにCSVファイルとして保存したいと考えています。
その際、空白列を削除したいのですがどのようなマクロを書けばよいでしょうか?
ご教示よろしくお願いしたします。

< 使用 Excel:Excel2021、使用 OS:Windows11 >


マクロ記録してみたら
(mac) 2023/04/11(火) 20:57:20

 空白列がないように表を作ればいいんじゃないですか?
 特定の列ならともかく、空白の列ってcsvとして破綻してないですか?
 それとも行の間違い?
(稲葉) 2023/04/11(火) 21:03:31

https://excel-ubara.com/excelvba5/EXCEL220.html

こういうコードがほとんどそのまま使えそう
範囲指定と「空白でない場合」の条件式入れるだけ
(火災報知器) 2023/04/11(火) 21:05:41


動くかわかりませんが参考まで

 Sub test()
     Dim ws As Worksheet, i As Long
     Set ws = ActiveSheet
     '新シートを挿入
     Worksheets.Add
     '指定範囲をコピペ
     ws.Range("A6:W30").Copy Range("A6")
     '空白列のない表を作成
     For i = Cells(6, Columns.Count).End(xlToLeft).Column To 1 Step -1
         If Cells(Rows.Count, i).End(xlUp).Row < 6 Then Columns(i).Delete
     Next
     '新ブックにコピー
     ActiveSheet.Copy
     'ブックをCSV保存
     ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "test.csv", xlCSV
 End Sub
(フォーキー) 2023/04/11(火) 21:10:37


>〜どのようなマクロを書けばよいでしょうか?
どの辺で詰まっているのでしょうか?具体的に現状のコードを示して相談されたほうがよいとおもいますが、例えばこんなアプローチでもよいと思います。
    Sub まくろ()
        Dim tmpRNG As Range

        [新規ブックを追加する命令]
        With Workbooks(Workbooks.Count).Worksheets(1)
            ThisWorkbook.Worksheets("集金計画").Range("A6:W30").[セル範囲をコピーする命令] Destination:=.Range("A1")

            On Error Resume Next
            Set tmpRNG = .Range("A1:W1").SpecialCells(xlCellTypeBlanks)
            On Error GoTo 0

            If Not tmpRNG Is Nothing Then tmpRNG.[含む列].[削除する命令]

            .Parent.SaveAs Filename:="〜〜〜〜〜〜〜〜", FileFormat:=xlCSV
            .Parent.Close False
        End With
    End Sub

(もこな2) 2023/04/12(水) 00:43:21


フォーキーさん、もこな2さん、ありがとうございます。
フォーキーさんのコードで無事にイメージ通りの動きになりました。
ネットで拾えるコードくらいしか使えず困っておりました。
ありがとうございました。
(のん) 2023/04/12(水) 18:18:42

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.