このポエムはフィクションであり、実在の人物・団体とは一切関係ありません。
前回までのお話はこちら。
転生したら銀行員だった件Ⅱ
今度は、送付状を400枚作らないといけないらしい。ひな型は既に用意してあった。
今回もExcel VBAでなんとかしていく。
やはり時間がないので画面は適当!
ひな型はちょっとコツがいる。黄色いセルにVLOOKUPを仕込んでいる。右上のオレンジのセルの値を変えると、黄色いセルの値も連動して変わる。VBAでセルの値を変えるよりずっと簡単だ。
VLOOKUPの欠点として、作った後で表に列追加されるとぐちゃぐちゃになるという点には留意すること。
やりたいこととしては、
- オレンジのセルの値を変える
- ひな型シートを別ファイルにコピーする
- 黄色いセルが数式のままだと扱いにくいので値に変換する
- 作成したファイルを保存する
といった具合である。
マクロでファイルを作って保存
Sheet1
Public Sub Main()
Dim FolderName As String
Dim FileName As String
Dim Target As Range
Dim Seq As Integer
Set Target = Me.Range("対象").Offset(1)
FolderName = Me.Range("フォルダ名").Value
Do While Not IsEmpty(Target.Value)
FileName = Target.Offset(0, 1).Value
Seq = Target.Offset(0, 2).Value
If Target.Value = "○" Then
Application.ScreenUpdating = False
Call OutTicket(FolderName & FileName, Seq)
Application.ScreenUpdating = True
' 完了したら●を記入
Target.Value = "●"
End If
' カーソルを1個下に進める
Set Target = Target.Offset(1)
Loop
MsgBox "Done."
End Sub
メイン処理は対象一覧を上から読むだけで、実際の処理はサブルーチンが全部やっている。
Sheet1
Private Sub OutTicket(FilePath As String, Seq As Integer)
Dim OutBook As Workbook
Dim LinkName As Variant
' オレンジのセルの値を変える
Sheet2.Range("連番").Value = Seq
Application.Calculate
' ひな型シートを別ファイルにコピーする
Sheet2.Copy
Set OutBook = ActiveWorkbook
' 黄色いセルが数式のままだと扱いにくいので値に変換する
For Each LinkName In ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
OutBook.BreakLink Name:=LinkName, Type:=xlLinkTypeExcelLinks
Next LinkName
' 作成したファイルを保存する
OutBook.SaveAs FileName:=FilePath, ReadOnlyRecommended:=True
OutBook.Close
End Sub
コメントに書いたとおり。
また、処理が終わったものは○→●になり、進捗状況がわかるようにした。
できた!
BreakLink
したおかげで、黄色いセルの内容が外部ファイルを参照する数式ではなく、値になっている。
それにしても、どんな内容なのか気になるセミナーだ。
あなた…今何を…?
またオレ何かやっちゃいました?
何って…VLOOKUPを使っただけ、だが?
ちなみにこれ全部押印が必要だったらしく、次長がものすごいスピードでハンコを押している。