【VBA】ファイルコピーの方法を基本から徹底解説!面倒な作業を自動化!

f:id:yshgs_elec:20201007102108j:plain

仕事をしていると、作成&編集したデータファイルを、別のフォルダにコピーする、という作業は多いと思います。

 

そんなときわざわざマウスとキーボートを使って

①コピーしたファイルを【Ctrl + C】でコピー

②コピー先のフォルダを何度もクリックして開く

③目的のフォルダに【Ctrl + V】で張り付け

という非常に面倒な作業を行っている人は多いのではないでしょうか?

 

この記事ではそのような面倒な作業をVBAを使ってエクセル上で実行する方法についてご紹介します。

 

初心者向けに画像多めでご紹介していきますので、ぜひ最後までご覧ください。

さっそくやっていきます!

 

スポンサーリンク

はじめに

この記事では、あらかじめコピーされるファイルの保存場所、ファイル名があらかじめわかっている場合を想定しています。

 

あくまでも基礎的なスキル紹介記事ですので、あらかじめご了承ください。

 

スポンサーリンク

VBA上でファイルをコピーする方法

早速ですが、以下がVBA上でファイルをコピーする方法です。

FileCopy 【ファイルのフルパス】,【ファイルのフルパス】

ここで一つ目の【ファイルのフルパス】が

コピーされるファイルです。

 

そして二つ目の【ファイルのフルパス】が

コピー後のファイルのフルパスです。

 

VBA上でこれらのフルパスを事前に取得しておき、最後にこのコードにあてはめていくだけです。

 

基本的な使い方がわかったところで、次は実際の使用例を見てみましょう。

 

スポンサーリンク

実際の使用例

実際のコードの記述に移る前に、まずはファイルのフルパスをエクセルシートに記入しておきましょう。

 

今回は以下のようにA列、F列にコピー前後のフォルダ、ファイル名を記入するようにしています。

コピー前後の保存場所、ファイル名を記述している様子

 

また、これらのフォルダはマクロ実行前は以下のようになっています。

左がコピーさせるファイルが入っているフォルダ、

右がコピー後のファイルが入るはずのフォルダです。

マクロ実行前の各フォルダの中身

VBA実行後は右側のフォルダにエクセルシートに記入された名前のファイルが生成されるはずです。

 

前置きはこの辺で、実際のVBAコードの記述に移っていきましょう。

以下が今回の状況で、ファイルをコピーする実行コードです。

Sub File_Copy_Macro()
    Dim base_fol  As String
    Dim base_file_name As String
    Dim copy_fol As String
    Dim copy_file_name As String
    'コピー前のファイル宣言
    base_fol = Cells(2, 1)
    base_file_name = Cells(4, 1)
    'コピー後のファイル宣言
    copy_fol = Cells(2, 6)
    copy_file_name = Cells(4, 6)
    'コピーの実行
    FileCopy base_fol & "\" & base_file_name, copy_fol & "\" & copy_file_name
End Sub

長々と記述していますが、最後の行のFileCop・・・という部分以外はすべてエクセルシート上の情報をVBAに覚えさせているだけですので、難しいことは特にしていません。

 

そして最後の行をよく見ていただくと、前半部分で取得したフォルダのパスやファイル名を使って、

FileCopy  【ファイルのフルパス】, 【ファイルのフルパス】という形を作っているだけだということがわかると思います。

 

このようにファイルをコピーする、という作業自体はVBA上ではたったの1行で終わるんですね。

 

ちなみにコピーされるファイルと同じフォルダに別ファイル名としてコピーしたい場合は、F2セルをA2セルと全く同じものを記述しておけばOKです。

 

またこのスキルは、応用すれば一度に複数ファイルをコピーしたり、同じファイルをいろいろなフォルダにコピーしていくということも可能になります。

※そのへんの応用スキルについては今後このブログで紹介していこうと思います。気になる方はぜひブックマークしておいていただけると幸いです。

 

スポンサーリンク

おわりに

というわけで今回はVBA上でファイルをコピーする方法についてご紹介しました。

 

ぜひ少しずつスキルアップし、日々の業務を効率化していきましょう。

 

このように、このブログでは、エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。

■業務の生産性を上げたい。

■早く帰って子供と遊びたい。

こんな人はぜひ他の記事も読んでみてください。

また、VBAを使ってこんなことがしたいんだけど、やり方がわからない、という悩みを抱えているかたは、お気軽にコメント欄から質問してください。

私にわかる範囲であればご協力いたしますので。(もちろん無料です。)

 

最後に・・・

このブログを応援してあげても良いよ、という方は以下のボタンをポチっていただけると嬉しいです。

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

Twitterもやっていますので、興味があれば覗いてみてください。

それではまた!!

コメント

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