hiko-blog

VBA業務改善

MENU

自動処理マクロcsv保存

Sub 自動処理マクロcsv保存()
    ' 指定の時間に実行されるVBAコード

    ' 例: シート1の5行目以降のA、B、C、E、G、H列のデータをCSVとして保存
    Dim FilePath As String
    Dim LastRow As Long
    Dim DataRange As Range
    Dim Today As Date
    Dim HeaderValue As Variant

    ' ファイルパスの設定(デスクトップに保存)
    FilePath = Environ("USERPROFILE") & "\Desktop\ExportedData.csv"

    ' シート1のデータの最終行を取得
    LastRow = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row

    ' シート1の5行目以降のA、B、C、E、G、H列のデータを指定範囲として取得
    Set DataRange = Sheets("Sheet1").Range("A5:B" & LastRow & ", C5:C" & LastRow & ", E5:E" & LastRow & ", G5:H" & LastRow)

    ' H1セルの値を取得
    HeaderValue = Sheets("Sheet1").Range("H1").Value

    ' データをCSVファイルとして保存
    DataRange.Copy
    Workbooks.Add
    ActiveSheet.Paste

    ' 列のヘッダーを設定
    ActiveSheet.Cells(1, 1).Value = "aaa"
    ActiveSheet.Cells(1, 2).Value = "bbb"
    ActiveSheet.Cells(1, 3).Value = "ccc"
    ActiveSheet.Cells(1, 4).Value = "eee"
    ActiveSheet.Cells(1, 5).Value = "ggg"
    ActiveSheet.Cells(1, 6).Value = "日付" ' H列に日付を格納

    ' 今日の日付を取得してH列に設定
    'Today = Date
    'ActiveSheet.Cells(2, 6).Value = Today

    ' H1セルの値をH列に代入
    ActiveSheet.Range("H2:H" & LastRow - 4).Value = HeaderValue

    ' ファイルを保存
    ActiveWorkbook.SaveAs FilePath, FileFormat:=xlCSV
    ActiveWorkbook.Close SaveChanges:=False
End Sub