データを作成して運用する場合、CSVで保管することが多いと思います。そのCSVの保存方法について記載します、
保存する構文
以下の記載方法となります。覚える必要は無いと思います。以下をコピーしてください。
ActiveWorkbook.SaveAs Filename:=CSV保存名, _
FileFormat:=xlCSV, CreateBackup:=False
今のワークブックを、変数(csv保存名)の中に入っている文字列で、csv形式で、バックアップを作らずに保存しなさい。というように、読めます。
付け加え
少し、上下に付け加えます。まず、①ファイルを保存するときに、聞いてくるwindowを出さなくする。②CSV保存名で保存する。③そのファイルを閉じる。④ファイルを保存するときに聞いてくるwindowを出すように戻すという内容です。
Application.DisplayAlerts = False 'ファイルクローズ時に保管するかどうか聞いてくるのをOFF
ActiveWorkbook.SaveAs Filename:=CSV保存名, _
FileFormat:=xlCSV, CreateBackup:=False
ActiveWindow.Close SaveChanges:=True
Application.DisplayAlerts = True 'ファイルクローズ時に保管するかどうか聞いてくるのをON
windowがイチイチ出てくると、作業の邪魔です。windowが一時的にでないようにして、でるように戻しております。
CSV保存名を作成
csv保存名は、固定の名称よりは、毎日変更された方が、前回の物が残るので、いつも新しいファイル名が良いと思います。
それには、①日付を入れる。②その内容を入れるで特定できると思います。
Sub 今日の日付を作る()
Sub 今日の日付を作る()
年 = Year(Date)
If Month(Date) < 10 Then
月 = "0" & Month(Date)
Else
月 = Month(Date)
End If
If Day(Date) < 10 Then
日 = "0" & Day(Date)
Else
日 = Day(Date)
End If
日付 = 年 & 月 & 日
MsgBox 日付
End Sub
これで、変数「日付」に日付(YYYYMMDD)が入りました。
IF構文を使っているのは、月が1月から9月までは、西暦に続いて月がきてしまうので、”0”を追加しています。これで、20218とかならずに、202108となります。
日も同じで、1日から9日までは、その前に0を追加するようにしております。10日以後は、2桁なので、そのまま使います。これで、20210903(YYYYMMDD)というようになります。
この日付だけでも他になければ問題ありませんが、何でも良いのですが、念のため”作業”を後に加えて、
csv保存名 = ”C:\パス名” & 日付 & “作業.csv”
としてあげると、作業した日の記録が取れるようになります。パス名は、自分で設定してください。
まとめると
以下のようになります。
Sub csvで保存()
年 = Year(Date)
If Month(Date) < 10 Then
月 = "0" & Month(Date)
Else
月 = Month(Date)
End If
If Day(Date) < 10 Then
日 = "0" & Day(Date)
Else
日 = Day(Date)
End If
日付 = 年 & 月 & 日
CSV保存名 = "C:\Users\Public\" & 日付 & "作業.csv"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=CSV保存名, _
FileFormat:=xlCSV, CreateBackup:=False
ActiveWindow.Close SaveChanges:=True
Application.DisplayAlerts = True
End Sub
moduleにコピーしてブロックとしてお使いください。
ここでは、フォルダ名(ディレクトリ)を”C:\Users\Public\” & 日付 & “作業.csv”としましたが、ここは自由に変更して実行してください。ここでは、日付をYYYYMMDDとしましたが、その上に年のフォルダを作るなら”C:\Users\Public\” & 年 & ”¥” & 月 & 日 & “作業.csv”としても良いです。自由に変更してみてください。
コメント