適格請求書対応のインボイス見積納品請求伝票日付版で、今回は作成した帳票を、数クリックだけで自動保存するVBAの解説です。
特に件数をこなす場合、この自動保存は便利です。
こんにちは、じゅんぱ店長(@junpa33)です。
エクセルVBAソフトのインボイス見積納品請求伝票日付版、今回は、作成完了した帳票を保存する作業をVBAでプログラム化します。
帳票保存の方法は、
「請求書」「納品書」「見積書」の3シートを取り出して(コピーして)、マクロなしエクセルブックとして一纏めにして保存します。
保存先は、既定にある保存フォルダ(「作成伝票」フォルダ )内に保存することになります。フォルダ内には3階層までのフォルダを作ることが出来ます。
ファイル名は自動で、「 3階層の保存フォルダ名+請求書+年月日時刻.xlsx 」が割り振られます。
保存場所の変更やリネームは、自動保存後に行うことが出来ます。
インボイス見積納品請求3点伝票作成の記事編成
- インボイス見積納品請求3点伝票作成ソフトの使い方とダウンロード
- インボイス見積納品請求伝票日付版作成ソフトの使い方とダウンロード
コンテンツ
帳票保存完了時のフォルダ
保存先とファイル名はこのようになります。
保存ファイル名は、2階層目のフォルダに保存する場合は2枚層までの名前(この場合だと「A市役所B建設部請求書_230926-2008」)というように、階層に合わせて変化します。
保存を行うVBAコード
ユーザーフォームの「帳票保存」ボタンをクリック、または、「印刷時自動保存」チェックボックスをチェックすると、実行されるプロシージャーを設計します。
VBA 全コード
ここではModule4に記述しています。
Option Explicit
Sub 伝票保存()
Dim Mypath, FolderPathD As String
Dim Shell As Object
Dim Newbook As Object
Dim FP, FPN, FPM, FPMN As String
Dim FPL, FPLN, FN, NbkN As String
Dim a As Long
'保存フォルダを選択
Mypath = ThisWorkbook.Path & "\作成伝票"
Set Shell = CreateObject("Shell.Application") _
.BrowseForFolder(0, "フォルダを選択してください", _
&H1, Mypath)
If Shell Is Nothing Then
FolderPathD = ""
Exit Sub
Else
FolderPathD = Shell.Items.Item.Path
End If
'フォルダ名の取得
FP = FolderPathD
FPN = Mid(FP, InStrRev(FP, "\") + 1)
FPM = Left(FP, InStrRev(FP, "\") - 1)
FPMN = Mid(FPM, InStrRev(FPM, "\") + 1)
FPL = Left(FPM, InStrRev(FPM, "\") - 1)
FPLN = Mid(FPL, InStrRev(FPL, "\") + 1)
'ファイルを保存
ChDir FP
Set Newbook = Workbooks.Add
For a = 2 To 4
ThisWorkbook.Activate
Worksheets(a).Cells.Copy
Newbook.Activate
Worksheets("sheet" & a - 1).Select
With ActiveSheet
.Paste
.Name = ThisWorkbook.Worksheets(a).Name
'行高さ設定
.Rows.RowHeight = 24
.Rows("1:12").RowHeight = 19.5
.Rows(1).RowHeight = 29.25
.Rows(2).RowHeight = 9
.Rows(4).RowHeight = 7.5
.Rows("7:10").RowHeight = 15.75
.Rows(11).RowHeight = 15.75
.Rows(12).RowHeight = 7.5
.Rows("13:14").RowHeight = 15.75
'列幅の設定
.Columns("A").ColumnWidth = 3.5
.Columns("B").ColumnWidth = 7.25
.Columns("C").ColumnWidth = 27.63
.Columns("D").ColumnWidth = 9.13
.Columns("E").ColumnWidth = 6.63
.Columns("F").ColumnWidth = 6
.Columns("G").ColumnWidth = 4.75
.Columns("H").ColumnWidth = 13.5
.Columns("I").ColumnWidth = 7.5
'印刷余白の設定
With .PageSetup
.TopMargin = Application _
.CentimetersToPoints(1.5)
.LeftMargin = Application _
.CentimetersToPoints(2)
.RightMargin = Application _
.CentimetersToPoints(1)
.BottomMargin = Application _
.CentimetersToPoints(1)
.HeaderMargin = Application _
.CentimetersToPoints(0.5)
.FooterMargin = Application _
.CentimetersToPoints(0.5)
'プリントタイトル
.PrintTitleRows = "$15:$15"
'ページ番号
.CenterFooter = "&P"
End With
End With
Application.CutCopyMode = False
Next a
'保存ファイルに名前を付ける
FN = Format(Now(), "yymmdd-hhmm")
With Newbook
If FPN = "作成伝票" Then
.SaveAs Filename:=FolderPathD & "\" _
& FPN & "請求書_" & FN & ".xlsx"
ElseIf FPMN = "作成伝票" Then
.SaveAs Filename:=FolderPathD & "\" _
& FPN & "請求書_" & FN & ".xlsx"
ElseIf FPLN = "作成伝票" Then
.SaveAs Filename:=FolderPathD & "\" _
& FPMN & FPN & "請求書_" & FN & ".xlsx"
Else
.SaveAs Filename:=FolderPathD & "\" _
& FPLN & FPMN & FPN & "請求書_" & FN & ".xlsx"
End If
NbkN = .Name
.Close
End With
ThisWorkbook.Activate
Worksheets("作業シート").Activate
Range("A1").Select
MsgBox NbkN & " で帳票の保存を行ないました。", _
vbInformation, "インボイス見積納品請求3点日付版作成"
End Sub
VBAコードの各部分解説
保存フォルダをダイアログを表示して指定できるようにします。
Shell関数を使用します。
こちらの記事が参考になります。
VBA 保存先フォルダをダイアログ指定で変数化指定した保存フォルダのフルパスからそれぞれの階層のフォルダ名を取得します。
Instr関数・InstrRev関数は文字列を検索する。ファイルパス取得に威力 Mid関数・Right関数・Left関数は文字列中の文字を切り出す新しいエクセルブックを追加してシートに「請求書」「納品書」「見積書」を順番にコピペしていきます。
シートのコピーを最速に理解!VBAコードで異なる結果各設定を行います。
階層別に取り出したフォルダ名と年月日時分を組み合わせて名付けを行います。
ファイルの保存に年月日+時刻を付けて管理する Format関数は書式設定のテッパン関数!実務の書式と重要5例
FN = Format(Now(), "yymmdd-hhmm")
With Newbook
If FPN = "作成伝票" Then
.SaveAs Filename:=FolderPathD & "\" _
& FPN & "請求書_" & FN & ".xlsx"
ElseIf FPMN = "作成伝票" Then
.SaveAs Filename:=FolderPathD & "\" _
& FPN & "請求書_" & FN & ".xlsx"
ElseIf FPLN = "作成伝票" Then
.SaveAs Filename:=FolderPathD & "\" _
& FPMN & FPN & "請求書_" & FN & ".xlsx"
Else
.SaveAs Filename:=FolderPathD & "\" _
& FPLN & FPMN & FPN & "請求書_" & FN & ".xlsx"
End If
NbkN = .Name
.Close
End With
帳票を保存するVBA まとめ
作成した帳票を保存するためのVBAを紹介しました。
操作的には、ユーザーフォームの「帳票保存」ボタンをクリックし保存フォルダを指定するだけで自動的に保存できるようにしました。
フォルダ変更やファイル名変更は、自動保存後に自由に行ってください。
次回は、販売管理ソフト「ソリマチ販売王」の外部データ出力からのデータ連携を行なえるVBAを紹介していきます。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。