- ベストアンサー
FileSearchがエクセル2007で使えなくなって困っています
- エクセル2007でFileSearchが使えない
- VBAに詳しい方にどのように変更すればいいか教えてほしい
- 更新ファイルがない場合はメッセージを表示する
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>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 ': 以下変更なしです。
その他の回答 (3)
- end-u
- ベストアンサー率79% (496/625)
コンソールウィンドウを出さないように、 DIRコマンドの結果をファイルに一旦出力して取り込みます。 このファイルを >Const WRK = "c:\temp\out.txt" '■出力用。ファイル名適宜変更のこと。 ここで指定します。 任意のファイル名に変更してもらって結構です。 あとで >Kill WRK 削除しています。 >Open WRK For Input As #nのところでパス名が無効ですと出てきます。 このエラーが出るという事は "c:\temp\out.txt"とした場合、Cドライブに"temp"という名前のフォルダがない場合のエラーでしょう。 適当なフォルダに変更してください。 (そのフォルダに書き込みできる権限がないといけません) #私の書き方が悪い所為もあるのかもしれませんが、 #この点まで自力で解決できないとなると今後のコードメンテが心配です。 #自作せずにどっかでフリーソフトでも探したほうが良いような。
お礼
回答ありがとうございます。 ご意見ごもっともででございますが、このソフトは仕事の前任者が制作したものであり、今連絡がつかない状況でございます。他の者はパソコン知識がゼロなもので、初心者ではありますが、私がやらなければならない状況であります。 end-uさん。ありがとうございました。
- end-u
- ベストアンサー率79% (496/625)
ファイル名でのソートが必要でしょうか? 必要なければ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 コンソールウィンドウが一瞬出ます。 気になるようだったらファイルに一旦出力して取り込む方法もあります。
お礼
回答ありがとうございます。 gwKillFL = Split(WRK, vbCrLf)のところで配列には割り当てられませんとでてしまいます。 どうしたら良いのでしょうか? もし、よければ回答のほうよろしくお願いします。
補足
end-uさん。 しばらく悩みましたが、できました。 ありがとうございます。 コンソールウィンドウが出ない方法もあるんですか? もし、よければよろしくお願いします。
- tom11
- ベストアンサー率53% (134/251)
2007では、ファイルサーチはなくなっています。 ですので、自分で、ファイルサーチ等を作らないと いけなくなります。 この辺がヒントになります。 http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200701/07010088.txt
お礼
ありがとうございます。 頑張ってはみたのですが、初心者なものでよく解りません。 ですが、大変参考になりました。
お礼
end-uさん。 お忙しい中、回答ありがとうございます。 Open WRK For Input As #nのところでパス名が無効ですと出てきます。 あと、出力用。ファイル名適宜変更のこととありますが、それは更新されるエクセルファイルの場所のことでしょうか?