タイトルのテキスト
タイトルのテキスト
タイトルのテキスト
タイトルのテキスト

VBAでファイルパス一覧からPDFファイルを開いていくマクロ【削除も】

VBA

t f B! P L

 

ブログのタイトル画像

前回、フォルダー内にあるPDFのファイルパス一覧を作成するVBAのコードを紹介しました。

ファイルパスの一覧を作ることができれば、それぞれのファイルに処理をするプログラムを作ることができます。

今回はファイルパスの一覧からPDFファイルを開いたり、削除したりするVBAのコードを書いていきます。

〇やりたいこと

ファイルパスの一覧

せっかくファイルパスの一覧を作ることができたので、この一覧をつかって、必要なPDFファイルのみ開いていく処理をしていきたいです。

前回つくったPDFファイルの一覧を活用して、表の横、(今回はH列)に開きたいファイルには「〇」、開きたくないファイルには「×」を入力しています。

「〇」を入力しているファイルパスのみ開いていきます。

〇つくったコード

VBAのコード

Range("A1").Select

Do While ActiveCell.Value <> ""

If ActiveCell.Offset(0, 7).Value = "" Then

E = ActiveCell.Value

CreateObject("Shell.Application").ShellExecute E

End If

ActiveCell.Offset(1, 0).Select

Loop

〇コードの解説

・表の先頭を選択します。

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関数を使って、セルを一つずつ移動させて、確認させていきました。

一度に開きたかったら、ForEachで読み込ませた方が早いかも・・・

〇ファイルの削除

フォルダーの画像

ファイルを開くことができましたが、削除することも簡単です。

先ほどの表で「〇」をつけたファイルのみ削除していきます。

ファイルを開くコードの

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

このコードを動かすと・・・

ファイルが削除されたの画像

最初に表で「〇」をつけた、sample1sample3sample5のファイルを削除することができました。

〇まとめ

今回は、Excelのファイルパスの一覧から、特定のPDFファイルを開いたり、削除したりするコードを作りました。

フォルダーの中にたくさんのファイルがあると、一つ一つ開いていくのはとても面倒です。

今回は、Excelの表を適当につくりましたが、きちんと書式を設定して、見栄えを良くすれば、ファイル操作システムも作ることができます。

「〇」、「×」もExcelのセル内なので、IF関数を使って、ファイルパスに「コピー」という文字が含まれていたら、削除対象の「印」をつけて、コピーファイルのみを削除していくなどといった使い方もできそうです。

いずれにせよ、ファイルパスが分かれば、それがPDFファイルであったとしても、ExcelVBAを使って、ファイルに対して、一度に処理をし、めんどくさい作業を自動化することができます。

 

koneka1208

koneka1208

自己紹介

自分の写真
エクセル好きの窓際会社員です。 エクセルの操作法や日々の会社で得た知見などを発信していきます。 よろしくお願いします。

ブログ アーカイブ

連絡フォーム

名前

メール *

メッセージ *

QooQ