戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
ファイル有無確認の結果が同じものが2重に出力される

    [196599] ファイル有無確認の結果が同じものが2重に出力される-

    ■親トピック/記事引用/メール受信=OFF■

    □投稿者/ exiad -(2025/05/15(12:23))
    □U R L/

      https://i.imgur.com/YrGY96b.png

      上図のように、あるフォルダに.xlsmを置いて、そのサブフォルダ群の中に、「.xlsxファイルがあるか」「.pdfファイルがあるかどうか」をチェックするマクロを作っています。

      チェックするところまでは出来たのですが、何故か同じところを2回も検索して、その結果が2重に出力されてしまいます。2重になる原因が分かりません。原因が分かる方、いらっしゃいますでしょうか??


      Sub OpenFilesInFolder()

      Dim path, fso, file, files, pfl, fl, UB, LC, FE1, FE2, Log

      path = ThisWorkbook.path
      Set fso = CreateObject("Scripting.FileSystemObject")


      Set pfl = fso.GetFolder(path)

      Dim s As String
      Dim t As String
      Dim u As String

      Dim TEMP As Object



      For Each fl In pfl.SubFolders
      s = fl.path
      sn = fso.GetFileName(s)

      UB = InStr(sn, "_")
      LC = Left(sn, UB - 1)

      errPath = ThisWorkbook.path & "\" & "ファイル存在error.txt"

      If Not fso.FileExists(errPath) Then
      fso.CreateTextFile (errPath)
      End If



      For Each TEMP In fso.GetFolder(s).files
      FE1 = Dir(s & "\*.xlsx")
      FE2 = Dir(s & "\*.pdf")


      If FE1 <> "" And FE2 <> "" Then

      End If

      If FE1 = "" And FE2 = "" Then

      MsgBox LC & "には何もファイルがありません"

      Set Log = fso.OpenTextFile(errPath, 8)
      Log.WriteLine Now & vbTab & LC & "には何もファイルがありません"
      Log.Close

      End If

      If FE1 = "" And FE2 <> "" Then

      MsgBox LC & "にはxlsxがありません"

      Set Log = fso.OpenTextFile(errPath, 8)
      Log.WriteLine Now & vbTab & LC & "にはxlsxがありません"
      Log.Close

      End If

      If FE1 <> "" And FE2 = "" Then

      MsgBox LC & "にはpdfがありません"

      Set Log = fso.OpenTextFile(errPath, 8)
      Log.WriteLine Now & vbTab & LC & "にはpdfがありません"
      Log.Close

      End If



      Next
      Next

      MsgBox "ファイルの精査が完了しました。"

      End Sub


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒Windows 11
      Version⇒Excel 2019
      ++++++++++++++++++++




    [196600] Re[1]: ファイル有無確認の結果が同じものが2重に出力される-

    記事引用/メール受信=OFF■

    □投稿者/ OK -(2025/05/15(14:49))
    □U R L/
      Set Log = fso.OpenTextFile(errPath, 8)
      
      引数8は追加書き込みモードでテキストファイルを
      開きますので、すでに何か書き込まれていたら上書
      きせずに追記します。
      
      ここは大丈夫ですか?


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [196601] Re[2]: ファイル有無確認の結果が同じものが2重に出力される-

    記事引用/メール受信=OFF■

    □投稿者/ exiad -(2025/05/15(14:54))
    □U R L/
      OKさん
      
      レスありがとうございます。そこのテキスト書き込み部分は意図的にそうしているもので、大丈夫です。
      
      If FE1 = "" And FE2 <> "" Then
      MsgBox LC & "にはxlsxがありません"
      
      If FE1 <> "" And FE2 = "" Then
      MsgBox LC & "にはpdfがありません"
      
      が同じ対象に対して2回実行されてしまいます。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒Windows 11
      Version⇒Excel 2019
      ++++++++++++++++++++




    [196602] Re[3]: ファイル有無確認の結果が同じものが2重に出力される-

    記事引用/メール受信=OFF■

    □投稿者/ OK -(2025/05/15(15:06))
    □U R L/
       For Each TEMP In fso.GetFolder(s).files
      
      ここでsフォルダの中の全ファイルに対して処理を行っています。
      つまり、ファイルの数だけ
       FE1 = Dir(s & "\*.xlsx")
       FE2 = Dir(s & "\*.pdf")
      
      を実行します。
      二重どころか三重、四重以上出力される可能性があります。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [196603] Re[4]: ファイル有無確認の結果が同じものが2重に出力される-

    記事引用/メール受信=OFF■

    □投稿者/ OK -(2025/05/15(15:24))
    □U R L/
         For Each TEMP In fso.GetFolder(s).files
      
      このループ内では
      TEMP
      は利用されてませんね。
      
         For Each TEMP In fso.GetFolder(s).files
      
      と、対になる
      Next
      を削除したらお望みの作業になると思います。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [196604] Re[5]: ファイル有無確認の結果が同じものが2重に出力される-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ exiad -(2025/05/15(15:59))
    □U R L/
      OKさん
      
      レスありがとうございます。ご指摘の箇所のFor、Nextを削除したら、出来ました。
      本当にありがとうございます。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒Windows 11
      Version⇒Excel 2019
      ++++++++++++++++++++



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G