LoginSignup
2
2

何って…VLOOKUPを使っただけ、だが?

Last updated at Posted at 2024-06-02

このポエムはフィクションであり、実在の人物・団体とは一切関係ありません。

前回までのお話はこちら。

転生したら銀行員だった件Ⅱ

今度は、送付状を400枚作らないといけないらしい。ひな型は既に用意してあった。

image.png

今回もExcel VBAでなんとかしていく。

やはり時間がないので画面は適当!

image.png

ひな型はちょっとコツがいる。黄色いセルにVLOOKUPを仕込んでいる。右上のオレンジのセルの値を変えると、黄色いセルの値も連動して変わる。VBAでセルの値を変えるよりずっと簡単だ。

image.png

VLOOKUPの欠点として、作った後で表に列追加されるとぐちゃぐちゃになるという点には留意すること。

やりたいこととしては、

  1. オレンジのセルの値を変える
  2. ひな型シートを別ファイルにコピーする
  3. 黄色いセルが数式のままだと扱いにくいので値に変換する
  4. 作成したファイルを保存する

といった具合である。

マクロでファイルを作って保存

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

コメントに書いたとおり。

また、処理が終わったものは○→●になり、進捗状況がわかるようにした。

image.png

できた!

image.png

BreakLinkしたおかげで、黄色いセルの内容が外部ファイルを参照する数式ではなく、値になっている。

それにしても、どんな内容なのか気になるセミナーだ。

あなた…今何を…?

またオレ何かやっちゃいました?

何って…VLOOKUPを使っただけ、だが?

ちなみにこれ全部押印が必要だったらしく、次長がものすごいスピードでハンコを押している。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2