• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FileSearchがエクセル2007で使えなくなって困っています。)

FileSearchがエクセル2007で使えなくなって困っています

このQ&Aのポイント
  • エクセル2007でFileSearchが使えない
  • VBAに詳しい方にどのように変更すればいいか教えてほしい
  • 更新ファイルがない場合はメッセージを表示する

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

>Dim gwKillFL() As String '要修正 これを見落としましたね? できたという事なので良かったですけど。 >コンソールウィンドウが出ない方法... Sub test()   Const WRK = "c:\temp\out.txt" '■出力用。ファイル名適宜変更のこと。   Dim TMP As String   Dim i  As Long   Dim x  As Long   Dim n  As Long      TMP = gAAFLD & "\*T" & Format(gBB, "00") & ".txt"   CreateObject("WScript.Shell").Run _          "%ComSpec% /c dir """ & TMP & """ /b/s>" & WRK, 0, True   n = FreeFile   Open WRK For Input As #n   gwKillFL = Split(Input(LOF(n), #n), vbCrLf)   Close #n   Kill WRK      x = UBound(gwKillFL)   If x > 0 Then   ': 以下変更なしです。

rion2010
質問者

お礼

end-uさん。 お忙しい中、回答ありがとうございます。 Open WRK For Input As #nのところでパス名が無効ですと出てきます。 あと、出力用。ファイル名適宜変更のこととありますが、それは更新されるエクセルファイルの場所のことでしょうか?

その他の回答 (3)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.4

コンソールウィンドウを出さないように、 DIRコマンドの結果をファイルに一旦出力して取り込みます。 このファイルを >Const WRK = "c:\temp\out.txt" '■出力用。ファイル名適宜変更のこと。 ここで指定します。 任意のファイル名に変更してもらって結構です。 あとで >Kill WRK 削除しています。 >Open WRK For Input As #nのところでパス名が無効ですと出てきます。 このエラーが出るという事は "c:\temp\out.txt"とした場合、Cドライブに"temp"という名前のフォルダがない場合のエラーでしょう。 適当なフォルダに変更してください。 (そのフォルダに書き込みできる権限がないといけません) #私の書き方が悪い所為もあるのかもしれませんが、 #この点まで自力で解決できないとなると今後のコードメンテが心配です。 #自作せずにどっかでフリーソフトでも探したほうが良いような。

rion2010
質問者

お礼

回答ありがとうございます。 ご意見ごもっともででございますが、このソフトは仕事の前任者が制作したものであり、今連絡がつかない状況でございます。他の者はパソコン知識がゼロなもので、初心者ではありますが、私がやらなければならない状況であります。 end-uさん。ありがとうございました。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

ファイル名でのソートが必要でしょうか? 必要なければDIRコマンドを使った簡易な手法があります。 Option Explicit ': Dim gwKillFL() As String '要修正 ': Sub test()   Dim TMP As String   Dim WRK As String   Dim i  As Long   Dim x  As Long   TMP = gAAFLD & "\*T" & Format(gBB, "00") & ".txt"   WRK = CreateObject("WScript.Shell").Exec _      ("%ComSpec% /c dir """ & TMP & """ /a/b/s") _      .StdOut.ReadAll   gwKillFL = Split(WRK, vbCrLf)   x = UBound(gwKillFL)   If x > 0 Then     For i = 0 To x - 1       Debug.Print gwKillFL(i)    '確認用       'Call p_ReadData(gwKillFL(i)) 'コメントアウトしてあります。       If gwKillFL(i) <> "" Then         'Kill gwKillFL(i)     'コメントアウトしてあります。       End If     Next     If gMenu1 > 0 Then       Range("A2").Select       MsgBox "更新", vbOKOnly, "確認"     End If   Else     If gMenu1 > 0 Then       MsgBox "更新ファイルなし。", vbOKOnly, "確認"     End If   End If End Sub コンソールウィンドウが一瞬出ます。 気になるようだったらファイルに一旦出力して取り込む方法もあります。

rion2010
質問者

お礼

回答ありがとうございます。 gwKillFL = Split(WRK, vbCrLf)のところで配列には割り当てられませんとでてしまいます。 どうしたら良いのでしょうか? もし、よければ回答のほうよろしくお願いします。

rion2010
質問者

補足

end-uさん。 しばらく悩みましたが、できました。 ありがとうございます。 コンソールウィンドウが出ない方法もあるんですか? もし、よければよろしくお願いします。

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

2007では、ファイルサーチはなくなっています。 ですので、自分で、ファイルサーチ等を作らないと いけなくなります。 この辺がヒントになります。 http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200701/07010088.txt

rion2010
質問者

お礼

ありがとうございます。 頑張ってはみたのですが、初心者なものでよく解りません。 ですが、大変参考になりました。

関連するQ&A