前回、フォルダー内にあるPDFのファイルパス一覧を作成するVBAのコードを紹介しました。
ファイルパスの一覧を作ることができれば、それぞれのファイルに処理をするプログラムを作ることができます。
今回はファイルパスの一覧からPDFファイルを開いたり、削除したりするVBAのコードを書いていきます。
〇やりたいこと
せっかくファイルパスの一覧を作ることができたので、この一覧をつかって、必要なPDFファイルのみ開いていく処理をしていきたいです。
前回つくったPDFファイルの一覧を活用して、表の横、(今回はH列)に開きたいファイルには「〇」、開きたくないファイルには「×」を入力しています。
「〇」を入力しているファイルパスのみ開いていきます。
〇つくったコード
〇コードの解説
・表の先頭を選択します。
Range("A1").Select
・表が空のセルになるまで繰り返す処置です。
Do While ActiveCell.Value <>
""
・もし表の7列先のセルの値が「〇」であれば
If ActiveCell.Offset(0, 7).Value = "〇" Then
・現在のセルの値を変数Eに代入せよ
E = ActiveCell.Value
・クリエイトオブジェクト関数をつかって、Shellコマンドをつかって、PDFファイルを開いていきます。
CreateObject("Shell.Application").ShellExecute
E
・条件分岐終了
End If
・下のセルに移動
ActiveCell.Offset(1, 0).Select
・ループ処理の終了
Loop
今回は、表のファイルパスをひとつづつ、開く、開かないを判別するので、Offset関数を使って、セルを一つずつ移動させて、確認させていきました。
一度に開きたかったら、For~Eachで読み込ませた方が早いかも・・・
〇ファイルの削除
ファイルを開くことができましたが、削除することも簡単です。
先ほどの表で「〇」をつけたファイルのみ削除していきます。
ファイルを開くコードの
・CreateObject("Shell.Application").ShellExecute
E
の部分をファイルを削除するKillステートメントに変えるだけです。
・Kill E
と変更するとOKです。
Range("A1").Select
Do While ActiveCell.Value <>
""
If ActiveCell.Offset(0, 7).Value = "〇" Then
E = ActiveCell.Value
Kill E
End If
ActiveCell.Offset(1, 0).Select
このコードを動かすと・・・
最初に表で「〇」をつけた、sample1、sample3、 sample5のファイルを削除することができました。
〇まとめ
今回は、Excelのファイルパスの一覧から、特定のPDFファイルを開いたり、削除したりするコードを作りました。
フォルダーの中にたくさんのファイルがあると、一つ一つ開いていくのはとても面倒です。
今回は、Excelの表を適当につくりましたが、きちんと書式を設定して、見栄えを良くすれば、ファイル操作システムも作ることができます。
「〇」、「×」もExcelのセル内なので、IF関数を使って、ファイルパスに「コピー」という文字が含まれていたら、削除対象の「印」をつけて、コピーファイルのみを削除していくなどといった使い方もできそうです。
いずれにせよ、ファイルパスが分かれば、それがPDFファイルであったとしても、ExcelVBAを使って、ファイルに対して、一度に処理をし、めんどくさい作業を自動化することができます。
0 件のコメント:
コメントを投稿