MW211 EXIT

devlog
ExcelVBA/CSVファイル出力
2018年06月02日
出力ファイルの選択を含めたCSVファイル出力処理は以下のような感じ。
┌──────────────────────────────────────┐
│Dim メッセージ As String, yMax As Long, y As Long                           │
│Dim 出力先 As Variant, ファイル名 As String                                 │
├──────────────────────────────────────┤
│ファイル名 = "CSVファイル.csv"  ' 初期表示                                  │
│Do                                                                          │
│    出力先 = Application.GetSaveAsFilename( _                               │
│        InitialFileName:=ファイル名, _                                      │
│        FileFilter:="CSVファイル,*.csv" _                                   │
│    )                                                                       │
│    ' キャンセル                                                            │
│    If 出力先 = False Then                                                  │
│        MsgBox "キャンセルされました。", vbInformation, "処理中止"          │
│        Exit Sub                                                            │
│    End If                                                                  │
│    ' 新規追加                                                              │
│    If Dir(出力先) = "" Then                                                │
│        Exit Do                                                             │
│    End If                                                                  │
│    ' 上書の確認                                                            │
│    ファイル名 = Dir(出力先)                                                │
│    メッセージ = ファイル名 & " は既に存在します。" & vbCrLf _              │
│               & "上書きしますか?"                                         │
│    If MsgBox(メッセージ, vbYesNo + vbExclamation, "上書確認") = vbYes Then │
│        Exit Do                                                             │
│    End If                                                                  │
│Loop                                                                        │
├──────────────────────────────────────┤
│Open 出力先 For Output As #1                                                │
│With ActiveSheet                                                            │
│    yMax = .UsedRange.Rows(.UsedRange.Rows.Count).Row                       │
│    For y = 1 To yMax                                                       │
│        Print #1, _                                                         │
│              Join(WorksheetFunction.Index( _                               │
│                       Range(.Cells(y, 1), .Cells(y, 16)).Value, _          │
│                       1, _                                                 │
│                       0), _                                                │
│                   ",")                                                     │
│    Next y                                                                  │
│End With                                                                    │
│Close #1                                                                    │
└──────────────────────────────────────┘
分類:ExcelVBA