今日の日付をつけたExcelファイルを自動でコピーする方法

PowerShell

自動でExcelファイルをコピーした方が良い理由


定例作業でマスターファイルをコピーして、そのファイルに今日の日付をつけるのは面倒くさくありませんか?

通常マスターファイルをコピーして、今日の日付を入れるには以下の操作が必要になります。(Windowsの場合)

・F2キーを押す
・ファイルをコピーする
・ファイル名に今日の日付を手入力する

この3ステップの操作が必要となります。

特に3つ目の手入力は、手間がかかります。

これを解消するのが、PowerShellというものを使用する方法です。

一度作成してしまえば、そのファイルを起動すると自動で上記の作業を代行してくれます。

PowerShellとは


PowerShellとはWindowsに命令を与えるコマンド群になります。

これをうまく作ることで、定例作業を自動化することが可能となります。

またOfficeとの相性もよく、ExcelやOutlookなどとも連携できます。

PowerShellは拡張子がps1で表されており、使うには拡張子がbatを使うのがてっとり早いです。

ではどのように作成するかというと、以下の手順で行います。

1.batファイルの中身を作成する。
2.ps1ファイルの中身を作成する。

では以下解説します。

今日の日付をつけたExcelファイルを自動でコピーする方法


まず上記1のファイルを作成します。

適当なファイル名を作り、拡張子をbatにします。

このファイルをメモ帳で開きます。

中身を以下に設定します。(batファイルとps1ファイルが同一フォルダに入っている場合)
powershell -ExecutionPolicy Unrestricted D:\my_work\prog\PowerShell\vivald.ps1

これは規定の文章と考えて、赤アンダーで引いたところにパスを入れます。

入れ方はエクスプローラーの上にあるパスをコピーします。

この例ではps1ファイルの名前を「vivald」としていますが、この名前は任意です。

次に上記で示したvivald.ps1というファイルを作成します。

右クリックをして「編集」を選択するとエディタが開きます。

ここに以下の内容を転記します。

#Excelデータのコピー(今日の日付を入れる)
#-formatは文字列として認識させる
#Get-Dateは今日の日付を取得
#Get-Date -formatで今日の日付を文字列として$dateに入れる
$date = Get-Date -format “yyyyMMdd”

#Join-Pathは文字列を連結するときに使用
$dummy2 = Join-Path .\(“dummy” + $date + “.xlsx”)

#Copy-Itemと-Destinationはセットで使う。(Destination:宛先)
#-Forceは強制コピー
Copy-Item -Path .\dummy.xlsx -Destination .\$dummy2 -Force

「#」はコメントで筆者が備忘録で書いたものです。

$dateとdummy2は変数名となっています。

次にコメントで書いてある中で、注意しなければならないことがあります。

それはyyyyMMddのMMは大文字にしなければならないことです。

これを小文字のmmにしてしまうと、時間の分(minutes)と判断してしまうからです。

あとはコメントのとおりです。

Join-Pathの「.\」は、現在ファイルが置いてあるフォルダを指します。

この例ではそのフォルダに、dummy20210328.xlsxというコピー先のファイルを作ろうとしています。

最後の-Pathの右隣にある、「.\dummy.xlsx」はコピー元のExcelファイルで、dummy20210328.xlsxと同じフォルダに入っています。

あとはコメントのとおりです。

まとめ


最初にこの2つのファイルを作るのが面倒くさいですが、定例作業においてこれを作成しておくと、長期的には作業時間の短縮が図れます。

今回は簡単な例で解説しましたが、複雑なこともできるのでExcelVBAなどと組み合わせたりすると、このPowerShellは力を発揮します。

冒頭で解説したとおり、Office製品との連携も可能なので作業時間の短縮がしやすいようになっています。

作るのは大変ですが、一度作ってしまえば月1回以上の頻度である定例作業は自動化したほうが楽になることは間違いありません。

今回はExcelのファイル名に今日の日付を入れることをしましたが、バリエーションは豊富なため徐々に便利な使い方を発表していこうと思います。

ご参考になれば幸いです。

コメント

タイトルとURLをコピーしました