次の方法で共有

Excel2003のマクロが2010でエラー445が出る

Anonymous
2013-10-01T02:21:00+00:00

ググったら、FileSeachが2007以降使えなくなると分かった。

暫定処置としてExcel2003を2010共存するようにし、

使えるようになりましたが、よくよくはデバッグを書き直さないといけないので、

みんなの知恵をこの場で借りられればうれしいです。

Excel2010でエラー445でデバッグボタンを押したら、

下記の該当部分(Set fs = Application.FileSearch)が黄色になっていたので

コピペしました。

どう(FileSearchをFileSystemObjectに)書き直せるかと

お力&知恵をよろしくお願いします。

***************************

Public Function chk_mmdd(dtmFrom As Date, dtmTo As Date, strFolder As String) As Boolean

    Dim dtmKijun    As Date

    Dim strNoData   As String

    chk_mmdd = True

    Set fs = Application.FileSearch

    For dtmKijun = dtmFrom To dtmTo

        With fs

            .NewSearch

            .LookIn = strFolder

            .SearchSubFolders = False

            .filename = Mid(CStr(dtmKijun), 6, 2) & Mid(CStr(dtmKijun), 9, 2) & ".xls"

            If .Execute(SortBy:=msoSortByFileName, _

                    SortOrder:=msoSortOrderAscending) > 0 Then

            Else

                'ファイルが見つからない

                If strNoData = "" Then

                    strNoData = fs.filename

                Else

                    strNoData = strNoData & Chr(13) & fs.filename

                End If

            End If

        End With

    Next

    If strNoData <> "" Then

        strMsg = cstWorkCVS & "下記のファイルが存在しないため処理できません。" & _

                Chr(13) & Chr(13) & strNoData

        MsgBox strMsg, vbOKOnly + vbExclamation, "ファイルチェック"

        chk_mmdd = False

        Exit Function

    End If

End Function

************************************************************************

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

3 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2013-10-01T12:45:08+00:00

    ↓は指定のフォルダを漁って、ファイル名を表示します。

    該当ファイルのピックアップは適当に工夫してください。

    なお、ファイル名をSortしておられるようですが、FileSystemObjectではそのような機能はないので、

    一度ワークシートに貯めて、Sortする必要があります。

    なお、私はアプリケーション的なものを丸ごと作ってコードを提供するような回答はいたしません。

    ここは無料コード作成サイトではなく、あくまでも分からないところをアドバイスするところです。

    Sub Sample()

    Dim FS As Object

    Dim wPath As String, wFile As Object, wName As String

    wPath = "E:\ABC"

    Set FS = CreateObject("scripting.filesystemobject")

    If FS.folderexists(wPath) Then

      For Each wFile In FS.getfolder(wPath).Files

        wName = wFile.Name

        MsgBox wName

      Next

    Else

      MsgBox "フォルダ " & wPath & " は存在しません"

    End If

    Set FS = Nothing

    End Sub

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2013-10-01T05:31:56+00:00

    上記のコードが自分作成したものではないので、

    ただ、問題ありそんなところを切り出しただけです。

    お手数ですが、素人にも分かるように(FileSystemObjectに書き直せる)

    コード類を教えていただければ幸いです。^_^

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2013-10-01T04:43:18+00:00

    VBAのDir関数でフォルダ内のファイルをすべて読み出し、名前をチェックするなり、

    純粋なVBAではありませんが、FileSystemObjectでやはりフォルダ内をすべて洗うか、特定のファイルの存在の有無を判定すれば済む話では?

    VBAをかなり使われるようなので、あえてコードは出しません。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません