Excelのマクロについて質問します。
<sheet1>の内容をCSVに出力するマクロを使用しているのですが、
問題があって困っています。
<seet1>のA1~K30までは数式が入っていて、<sheet2>のA1~A30に
「OK」と表示されている場合、<sheet1>の対応した行に数値が表示されます。
「OK」以外の場合は、空白になるようにしてあります。
【sheet1】
A B C D E …
1 100 200 300 400 500
2 100 200 300 400 500
3 100 200 300 400 500
4 100 200 300 400 500
5
6
【sheet2】
A
1 OK
2 OK
3 OK
4 OK
5
6
<sheet1>をマクロでCSV出力する際に、「空白だけど数式が入っているセル」を
除外する方法を教えてください。
現在は「空白だけど数式が入っているセル」もCSV出力されてしまい、「,」が
連続で表示されるので、手動で「,」を削除しています。
■今使用しているマクロは以下になるので、これに追記する形で改良できないでしょうか。
Sub CSV出力()
Dim FileN As String
FileN = Application.GetSaveAsFilename( _
InitialFileName:="book1.csv", _
FileFilter:="CSV ファイル (*.csv), *.csv")
Sheets("sheet1").Copy
ActiveWorkbook.SaveAs Filename:=FileN, FileFormat:=xlCSV
ActiveWorkbook.Close Savechanges:=False
End Sub
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんばんは。
出力したものは、行の長短が出来て、凸凹になってしまってもよいということですか?
>これに追記する形で改良できないでしょうか。
Sheets("Sheet1").Copy の後で、あくまでも、空白が「文字列」になっている条件ですが、
Range("A1:K30").SpecialCells(xlCellTypeFormulas, xlCellTypeConstants).Delete Shift:=xlToLeft
とすれば出来ます。
しかし、こんなコードも考えられます。以下の場合は、複雑な条件を取りつけることが可能です。
今回は、「""」という表示になっていることが条件です。
'//標準モジュールで、出力は、ActiveSheet
Sub Test1()
Dim FName As String
Dim Fno As Integer
Dim myRange As Range
Dim i As Long, j As Long
Dim strLine As String
Set myRange = Range("A1", "K30") '範囲
FName = Application.GetSaveAsFilename( _
InitialFileName:="book1.csv", _
FileFilter:="CSVファイル (*.csv), *.csv")
If FName = "False" Or FName = "" Then Exit Sub 'キャンセルが利くようにする
Fno = FreeFile()
Open FName For Output As #Fno
For i = 1 To myRange.Rows.Count
For j = 1 To myRange.Columns.Count
If Trim(Cells(i, j).Value) <> "" Then
strLine = strLine & "," & Cells(i, j).Value
End If
Next j
Print #Fno, Mid(strLine, 2)
strLine = ""
Next i
Close #Fno
Set myRange = Nothing
End Sub
ありがとうございます。
空白は文字列ではなかったので、下の記述を試したところ、
うまくいきました。
色々と応用が利くので、この先も使っていきます。
助かりました。
No.2
- 回答日時:
>これに追記する形で改良できないでしょうか。
ご利用のエクセルのバージョンが不明ですが、エクセルにCSVとして保存させる方式では、ご希望の事はできません。
#参考
2003以前のエクセルの場合:
http://support.microsoft.com/kb/400253/ja
の仕様によって、一部の行についてカンマが補填されます
2007以降のエクセルの場合:
上述の「仕様」は変更され、全ての行にカンマが補填されます。
>マクロでCSV出力する際に、「空白だけど数式が入っているセル」を除外する方法
sub macro1()
dim h as range
dim buf as string
dim FileN as string
FileN = Application.GetSaveAsFilename( _
InitialFileName:="book1.csv", _
FileFilter:="CSV ファイル (*.csv), *.csv")
open filen for output as #1
with application
for each h in range("A1:A" & range("A65536").end(xlup).row)
buf = join(.transpose(.transpose(range(h, cells(h.row, "IV")).value))," ")
buf = .trim(buf)
buf = replace(buf, " ", ",")
print #1, buf
next
end with
close #1
end sub
みたいな。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
CSV形式にすると出てくる空白を消したいです。
その他(Microsoft Office)
-
【Excel】 csvの作成時、空白セルにもカンマ
Excel(エクセル)
-
EXCELでCSVファイル保存するとデータが無いところにカンマ
その他(ソフトウェア)
-
-
4
Excel:任意の列だけCSV形式で出力したい。
Excel(エクセル)
-
5
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
6
EXCELからCSVにすると余計なカンマがつきます
Excel(エクセル)
-
7
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
8
【Excel VBA】カンマと改行コードを取り除くマクロ
Visual Basic(VBA)
-
9
エクセルでCSVを編集するとき、空白(NULL?)はどう入れますか
Excel(エクセル)
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
EXCELVBAにて文字列にして「01」と表示させて、CSV形式で保存すると「1」になってしまう。
その他(プログラミング・Web制作)
-
12
【ExcelVBA】各セルをダブルクォーテーションで括ってCSV保存したい
Visual Basic(VBA)
-
13
Excel csv保存 列数が異なる場合に、余分にカンマをつけない(ヘッダとデータの列数を変える)
Excel(エクセル)
-
14
VBA:Openステートメントで開いたCSVファイルの特定行を削除する方法
その他(プログラミング・Web制作)
-
15
空白行(数式は入っている)の一括削除
Excel(エクセル)
-
16
エクセルでエラーが出て困っています。
Excel(エクセル)
-
17
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
18
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
19
ExcelVBAで最終行を誤認する問題の回避方法
Visual Basic(VBA)
-
20
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでcsvファイルもシートもあ...
-
EXCEL→CSV保存時のダブルクォー...
-
ダブルコーテーション付きでCSV...
-
【ExcelVBA】300万件越えCSVか...
-
Excelマクロ 空白セルを無視し...
-
VBA csvファイルのデータを...
-
VB.netでShellExecuteがしたい
-
複数のファイルをまたぐエクセ...
-
rubyを用いたCSVファイルの分割...
-
バッチ処理 特定の文字以降を...
-
【ruby】flockで掛けたロックを...
-
C# ファイルを読み込みlistvie...
-
VBA テキストボックスを選択状...
-
バッチ for /f 空白、スペース...
-
verilog HDLについての質問です...
-
ギャスケット作成。修正の解説...
-
SQLでテキストボックスの文字を...
-
fortranでNAのあるデータを読み...
-
[コンパイルエラー 修飾子が不...
-
INPUTタグ disabledの文字色を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロ 空白セルを無視し...
-
【ExcelVBA】300万件越えCSVか...
-
ダブルコーテーション付きでCSV...
-
VBAでcsvファイルもシートもあ...
-
CSVで余計な空行が入る
-
EXCEL→CSV保存時のダブルクォー...
-
LibreOffice Calcのマクロで、...
-
CSVデータの文字列置換
-
VBAで複数のCSVからレコードセ...
-
pythonでリストをCSVに出力する...
-
ファイル名を変数で書きこむfwr...
-
VB.netでShellExecuteがしたい
-
バッチコマンドで指定行を抽出...
-
エクセルの任意のシートをcs...
-
StringGridの中身をCSV形式で保...
-
pythonのこのエラーがわかりません
-
CSVファイルの比較と結果の取得...
-
rubyを用いたCSVファイルの分割...
-
PowerShellからGhostscriptを動...
-
ブラウザ上でcsvファイルの編集
おすすめ情報