当事務所用)仕訳インポートの下処理で、フォルダ内のブックファイルのうちシート「取込」をcsv形式で保存し、上2行を削除するVBAのコードは?

問題の所在

当事務所では、仕訳インポートを重用している。その段取りは、

step1)各取引について、弥生形式の仕訳インポートCSVファイルを作成

step2)上の各csvを結合

(step3)仕訳インポート

である。

従来、

step1)は、エクセル関数を駆使し、内容chを兼ねてショートカットを含む手作業で編集・保存し、

step2)だけは以下のサイトで無償提供されているサンプルマクロ有効ファイルを活用させていただいている
★その御礼に著者の本は優先的に購入 (*^^*)

フォルダ内のExcel・CSVを1つにまとめる(結合する、マージする)マクロ

しかし、最近、キーボードの使いすぎか、右手が腱鞘炎っぽい(気がするだけ?)ので、上の step1)もVBAファイルを作成しようと!

実は、以下の本を再読して作成しようと思ったのだが、無料copilotを使って、慣らしのつもりが、、23時前後から初めて1時前後、、、、7回ほどやり取りしたら、、、できてもうた!その備忘メモ。

結論

★ .xlsm形式のサンプルマクロファイル現物を添付すると、トラブルの可能性があるため、======以下にコードをコピペ。

これを上の本のp45の方法で、実行ボタンを設定するのに1分もあれば、もうファイル完成!

=================

Sub ExportCleanAndDeleteTokumiCSV()
Dim folderPath As String
Dim fileName As String
Dim wb As Workbook
Dim ws As Worksheet
Dim csvFileName As String
Dim cleanedCsvFileName As String
Dim tempWB As Workbook
Dim csvName As String

‘ このVBAファイルと同じフォルダを対象
folderPath = ThisWorkbook.Path & “\”

‘ Step ①: 「*当月分.xlsx」ファイルを処理
fileName = Dir(folderPath & “*当月分.xlsx”)
Do While fileName <> “”
Set wb = Workbooks.Open(folderPath & fileName, ReadOnly:=True)

On Error Resume Next
Set ws = wb.Sheets(“取込”)
On Error GoTo 0

If Not ws Is Nothing Then
ws.Copy
Set tempWB = ActiveWorkbook

csvFileName = folderPath & Replace(fileName, “.xlsx”, “”) & “_取込.csv”
tempWB.SaveAs Filename:=csvFileName, FileFormat:=xlCSV
tempWB.Close SaveChanges:=False
End If

wb.Close SaveChanges:=False
Set ws = Nothing
fileName = Dir()
Loop

‘ Step ②: 「*取込.csv」ファイルを加工して「_取込2.csv」に保存
csvName = Dir(folderPath & “*取込.csv”)
Do While csvName <> “”
Set tempWB = Workbooks.Open(folderPath & csvName)

With tempWB.Sheets(1)
.Rows(“1:2”).Delete
End With

cleanedCsvFileName = folderPath & Replace(csvName, “_取込.csv”, “_取込2.csv”)
tempWB.SaveAs Filename:=cleanedCsvFileName, FileFormat:=xlCSV
tempWB.Close SaveChanges:=False

csvName = Dir()
Loop

‘ Step ③: 元の「*取込.csv」ファイルを削除
csvName = Dir(folderPath & “*取込.csv”)
Do While csvName <> “”
Kill folderPath & csvName
csvName = Dir()
Loop

MsgBox “すべての処理(CSV保存・加工・削除)が完了しました!”
End Sub

==================

理由

当事務所のユニークな事情として、以下の①、②、③があった:

① 当事務所の仕訳インポートは、毎月分をフォルダに固める運用であり、参考用のエクセルファイルも同梱している。
そこで、CSVファイルで保存するブックファイルの名称を、*当月分.xlsx で統一する。
★一つずつ整理する過程でリネイムすれば足りる。

② 毎回をファイルはブック形式で、複数のシートから成る。そのうち仕訳インポートのシート名は「取込」で共通。
なお、従来、手作業保存していたので、ブックファイルの最前列(?)シートは自然に「取込」シートで保存していた。

③ シート「取込」は、他のシートとの整合性ch等を目的に、上の2行が見出し行になっている。
そのため、最終的な仕訳インポート用のcsvファイルでは、当該上の2行を削除しておく必要がある。

①と②のために、
いったんブックファイルを開いて「取込」シートをcsv形式で保存する、とした。

③のために、
1)最初に、「*取込.csv」のファイル名で保存し、
2)これらを1つずつ開いて、2行削除して「*取込2.csv」のファイル名で保存し、
3)最後に、残った「*取込.csv」のファイルを全部削除して、「*取込2.csv」のみが残るようにした。

なお前後するが、Copilotとのやり取りでの、最終の質問文は以下の短文であった:

「私がもとめていたのは、「① Excelファイル(*当月分.xlsx)を1つずつ開いて、シート名が取込であるシートをCSV形式で保存。その際、各CSVファイルは 元ファイル名_取込.csv という形式で保存 → ② 同じフォルダに保存した*取込.csvファイルを1つずつ開いて、1行目と2行目を削除してから元ファイル名_取込2.csvという形式で保存 → ③ 同じフォルダに保存した*取込.csvを全部削除」までを一括で実行するVBAコードです。」

 

補足

いやー、コードは一行も書いてない (*^^*)。。。。無料Copilotでこの威力!

PS

なお、3w前くらいに、上の入門書を通勤中の電車の中で1回通読していたので、なんとなくプログラムの感が働いた(?)