Excelのマクロについて質問させてください。
1枚目のシートに情報を入力、その他のシート(10シート程)には式を入力して、当てはまる場合は抽出、当てはまらない場合は空白を表示させています。
すべてのシートをCSV
形式で保存するマクロを使用していますが、式が入っている空白の行もそのまま空白行として保存されてしまうので、それぞれのCSVを開いては手動で行を削除する、という手間があります。
条件:
①全てのシートをCSV形式で保存したい
②式が入っていても、空白で表示される行は削除して保存したい
③すべてが空白になるシートもエラーが出ないようにしたい(保存・未保存はどちらでも大丈夫です)
今現在使用しているマクロは情報サイトから持ってきてそのまま使用しているので、自分では作成できません。
ご存知の方はお教えいただけますと助かります!よろしくお願いします。
◆使用中のマクロ
Sub ExportFiles(frm As XlFileFormat)
' ブックが保存済みでない場合は保存
If ActiveWorkbook.Saved = False Then
If MsgBox("ブックがまだ保存されていません。保存しますか?", vbYesNo) = vbNo Then
Exit Sub
Else
ActiveWorkbook.Save
End If
End If
' 出力先フォルダを選択
Dim fd As FileDialog, fld As String
fld = ActiveWorkbook.Path
If Right(fld, 1) <> "" Then
fld = fld & ""
End If
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
fd.Title = "出力先フォルダの選択"
fd.AllowMultiSelect = False
fd.InitialFileName = fld
If fd.Show = False Then Exit Sub
fld = fd.SelectedItems(1)
If Right(fld, 1) <> "" Then
fld = fld & ""
End If
' 書き出し
Dim ws As Worksheet, fname As String, ext As String, wbPath, f As Boolean
Application.DisplayAlerts = False
Application.ScreenUpdating = False
wbPath = ActiveWorkbook.FullName
If frm = xlCSV Then
ext = ".csv"
Else
ext = ".tsv"
End If
For Each ws In ActiveWorkbook.Worksheets
f = False
ws.Activate
fname = fld & ws.Name & ext
If Dir(fname) <> "" Then
f = (MsgBox(fname & "が存在します。上書きしますか?", vbYesNo) = vbYes)
Else
f = True
End If
If f Then
ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=frm
End If
Next
ActiveWorkbook.Close
Workbooks.Open wbPath
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "書き出しが終了しました"
End Sub
回答1件
あなたの回答
tips
プレビュー