勤め人の方は、毎月の交通費の精算書を会社に出していると思います。精算書は、Excelのフォーマットですか? でしたら、データもあれば、毎月の作業を効率化できます。
SUICA(交通系IC)をカードリーダーに読み込ませてCSVファイルを取得すれば、データが手に入ります。
Excelマクロ(VBA)は、いつ使うのか? それは、手もとにフォーマットとデータの2つが揃ったときです。
データは下ごしらえが必要
SUICAのCSVデータは新しい順に並んでいますが、交通費精算のフォーマットは古い順に書くと思います。そこで、あらかじめデータの方に行番号を振って降順(古い順)に並べ替えておきます。
あと、データに列を追加してそこに訪問先を入力し、フィルタで全選択→空欄除外で精算対象だけを抽出して、フォーマットの隣のシートにデータを貼り付けます。
これで、データとフォーマットが揃いました。あとはコードを書いて、データからフォーマットに転記するだけです。
作例
左のフォーマットの適切な列に、右のシートにあるデータの必要な列のデータを転記していく、ごく初歩的なマクロです。左のRangeのセル指定は、お手もとのフォーマットに応じて適時変えてくださいね。
Option Explicit Sub koutuhi() '交通費精算書のフォーマットにSUICAのデータ(古い順に並べ替え後)を転記する Dim i 'シートデータの最大行を数える For i = 2 To Worksheets("data").Range("a" & Rows.Count).End(xlUp).Row Worksheets("fmt").Range("a" & i + 2).Value = Worksheets("data").Range("b" & i).Value Worksheets("fmt").Range("b" & i + 2).Value = Worksheets("data").Range("m" & i).Value Worksheets("fmt").Range("d" & i + 2).Value = Worksheets("data").Range("g" & i).Value Worksheets("fmt").Range("e" & i + 2).Value = Worksheets("data").Range("e" & i).Value Worksheets("fmt").Range("g" & i + 2).Value = Worksheets("data").Range("h" & i).Value Worksheets("fmt").Range("h" & i + 2).Value = Worksheets("data").Range("i" & i).Value Next End Sub