web-dev-qa-db-ja.com

Dir()関数がMac Excel 2011VBAで機能しない

こんにちは私はExcelワークブックが存在するサブディレクトリ内のすべてのファイルを一覧表示しようとしています。何らかの理由で、コードはDir関数を超えて実行できません。誰かアドバイスしてもらえますか?ありがとうございました!

Sub ListFiles()

    ActiveSheet.Name = "temp"

    Dim MyDir As String
    'Declare the variables
    Dim strPath As String
    Dim strFile As String
    Dim r As Long

    MyDir = ActiveWorkbook.Path 'current path where workbook is
    strPath = MyDir & ":Current:" 'files within "Current" folder subdir, I am using Mac Excel 2011

    'Insert the headers in Columns A, B, and C
    Cells(1, "A").Value = "FileName"
    Cells(1, "B").Value = "Size"
    Cells(1, "C").Value = "Date/Time"

    'Find the next available row
    r = Cells(Rows.Count, "A").End(xlUp).Row + 1

    'Get the first file from the folder
            'Note: macro stops working here
    strFile = Dir(strPath & "*.csv", vbNormal)

    'Loop through each file in the folder
    Do While Len(strFile) > 0

        'List the name, size, and date/time of the current file
        Cells(r, 1).Value = strFile
        Cells(r, 2).Value = FileLen(strPath & strFile)
        Cells(r, 3).Value = FileDateTime(strPath & strFile)

        'Determine the next row
        r = r + 1

        'Get the next file from the folder
        strFile = Dir

    Loop

    'Change the width of the columns to achieve the best fit
    Columns.AutoFit

End Sub
13
AG10

Gianna、VBA-Excel2011のようにDIRを使用することはできません。ワイルドカードはサポートされていません。この目的にはMACIDを使用する必要があります。

このコードサンプルを参照してください(TRIED AND TESTED

Sub Sample()
    MyDir = ActiveWorkbook.Path
    strPath = MyDir & ":"

    strFile = Dir(strPath, MacID("TEXT"))

    'Loop through each file in the folder
    Do While Len(strFile) > 0
        If Right(strFile, 3) = "csv" Then
            Debug.Print strFile
        End If

        strFile = Dir    
    Loop
End Sub

MACIDの詳細については、このリンクを参照してください

トピック:MacID関数

リンクhttp://office.Microsoft.com/en-us/access-help/macid-function-HA001228879.aspx

編集:

私が疑うリンクが死んだ場合に備えて、ここに抜粋があります。

MacID関数

Macintoshで使用され、4文字の定数を、Dir、Kill、Shell、およびAppActivateで使用できる値に変換します。

構文

MacID(定数)

必須の定数引数は、リソースタイプ、ファイルタイプ、アプリケーション署名、またはAppleイベント、たとえば、テキスト、OBIN、Excelファイルの場合は "XLS5"( "XLS8 「Excel97の場合)、Microsoft Wordは「W6BN」(Word97の場合は「W8BN」)などを使用します。

備考

MacIDは、Macintoshファイルタイプを指定するためにDirおよびKillとともに使用されます。 Macintoshは*と?をサポートしていないのでワイルドカードとして、代わりに4文字の定数を使用してファイルのグループを識別することができます。たとえば、次のステートメントは、現在のフォルダーからTEXTタイプのファイルを返します。

Dir( "SomePath"、MacID( "TEXT"))

MacIDはShellおよびAppActivateとともに使用され、アプリケーションの一意の署名を使用してアプリケーションを指定します。

HTH

19
Siddharth Rout
If Dir(outputFileName) <> "" Then
Dim ans
ans = MsgBox("File already exists.Do you wish to continue(the previous file will be    deleted)?", vbYesNo)
If ans = vbNo Then
Exit Sub
Else
Kill outputFileName
End If
End If

For listitem = 0 To List6.ListCount() - 1
0
user1934049

上記の答えについては、MacIDの「TEXT」を取り出したときにうまくいきました。

Sub LoopThruFiles()

    Dim mydir As String
    Dim foldercount As Integer
    Dim Subjectnum As String
    Dim strpath As String
    Dim strfile As String

    ChDir "HD:Main Folder:"
    mydir = "HD:Main Folder:"
    SecondaryFolder = "Folder 01:"
    strpath = mydir & SecondaryFolder

    strfile = Dir(strpath)

    'Loop through each file in the folder
    Do While Len(strfile) > 0
     If Right(strfile, 3) = "cef" Then
        MsgBox (strfile)
        End If
        strfile = Dir
    Loop
End Sub
0
Clock247