[[20141020140301]] 『フォルダの中を確認し、不要なファイルを削除』(ひつじ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『フォルダの中を確認し、不要なファイルを削除』(ひつじ)

こんにちは、ひつじです。
教えてください。

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.