[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フォルダの中を確認し、不要なファイルを削除』(ひつじ)
こんにちは、ひつじです。
教えてください。
C:\Users\hitsuji\A
というフォルダに
企画1課.xlsx
企画2課.xlsx
企画3課.xlsx
戦略企画課.xlsx
営業1課.xlsx
営業2課.xlsx
・
・
・
とあります。
このそれぞれのファイルを開き、B29のセルがブランクであればそのファイルを削除する
という事をしたいのですが、教えて頂けますでしょうか。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
B29セルがブランクなシートが1つでもあったら、ファイルを消してしまって大丈夫?
Sheet2とかSheet3とか、よく空白のシートを残している人を見ますが…。
とりあえず実現方法だけ書きます。
・フォルダ内をDir関数で調べる。
・WorkBookオブジェクトでファイルをOpen。
・目的のシートの、目的のセル(B29)を調べ、ブランクなら変数に1でもセットしておく。
・ファイルをClose。
・目的のセルがブランク(変数=1)だった場合、ファイルを削除(Kill)。
・次のファイル名をDir関数で得る。
・ファイル名が得られる間、ループ。
(???) 2014/10/20(月) 15:58
ご回答ありがとうございます!
大変申し訳ございません、マクロはツールバーの「マクロの記憶」で動作を
覚えさせる方法しか碌にできない為、具体的にコードを教えて頂きたいです。
シート名の規則性はどうなっているのでしょう?
シート名は各ファイル共通で、1つだけです。
そのほかのシートはありません。
シート名は「見積もり依頼」です。
何卒何卒よろしくお願いいたします。
(ひつじ) 2014/10/20(月) 16:25
Sub test() Dim wk As Workbook Dim cFile As String Dim cPath As String Dim iFlag As Long
cPath = "C:\Users\hitsuji\A\"
cFile = Dir(cPath & "*.*") While cFile <> "" iFlag = 0
Set wk = Workbooks.Open(cPath & cFile, False, True) If wk.Sheets("見積もり依頼").Range("B29") = "" Then iFlag = 1 End If wk.Close
If iFlag = 1 Then Kill cPath & cFile End If
cFile = Dir Wend End Sub (???) 2014/10/20(月) 16:48
これの続きですね。
http://www.excel.studio-kazu.jp/kw/20141010180346.html
元のコードで作成した空っぽのエクセルファイルが相当数あると推察します。
わたしだったら、それらのファイルはいったん全部削除して(もしくは
新しいフォルダにでも、いったん全部移動しておいて)
前スレで書いていただいたコードを過去のデータに当てはめて、必要なエクセルファイルを
あらためて作成するという方法をとります。
( 佳 ) 2014/10/20(月) 19:27
努力もせず、きくばかりで大変申し訳ございません。
頂きましたコードで無事、動きました。
また頂いたキーワードをはめながら、自分でも頑張って勉強していきます。
このたびはご親切に本当にありがとうございました。
佳様
方法を提示頂き、ありがとうございました。
また何かの機会がございましたら、よろしくお願いいたします。
(ひつじ) 2014/10/22(水) 15:13
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.