0

嗨,当我使用*以下**代码时,我在系统的特定文件夹中有一些文件*它提供了该文件夹中的所有文件(直接传递路径)

filenm = Dir("C:\Documents and Settings\murugan.k\Desktop\Daily report automation\Eve report\trial\")

Do Until filenm = ""
ActiveSheet.Cells(ctr, 12).Value = filenm
ctr = ctr + 1
filenm = Dir()
Loop

但是当我将相同的路径存储在变量中并将变量传递给 dir 函数时,它只给了我两个文件(AUTOEXEC.BAT & bar.emf)

filenm = Dir(pth)
Do Until filenm = ""
ActiveSheet.Cells(ctr, 12).Value = filenm
ctr = ctr + 1
filenm = Dir()
Loop

有人可以帮我解决这个问题吗,因为我无法在宏中硬编码必须是动态的路径(根据用户进行更改)

4

3 回答 3

1

为Dir() 函数尝试不同的属性。

path = "C:\Documents and Settings\murugan.k\Desktop\" & _ 
        "Daily report automation\Eve report\trial\"

filenm = Dir(path, vbNormal)

Do Until filenm = ""
    ActiveSheet.Cells(ctr, 12).Value = filenm
    ctr = ctr + 1
    filenm = Dir()
Loop
于 2013-05-21T09:42:01.273 回答
0

好吧,对我来说,您的回答不起作用,经过一番环顾后,我发现了一个小错误。您的代码一般都很好,但是“=”符号不起作用,因为

当没有更多文件名匹配时,Dir 返回一个长度为零的字符串 ("")。

至少我认为这是它对我的输出没有显示任何内容的原因。所以我会说它的工作原理是:

Sub LoopThruDirectory2()

Dim strPath As String
Dim strFile As String
Dim x As Integer
strPath = ThisWorkbook.path
strFile = Dir(strPath & "\")
Do While strFile <> ""
    x = x + 1
    Debug.Print strFile
    strFile = Dir    ' Get next entry.
Loop

End Sub

随意将“thisworkbook.path”设置为您的路径并根据需要处理 strFile。(例如,见上文)。对于我的项目,用户想要选择一个选定的文件夹,所以我不得不使用“msoFileDialogFolderPicker”。以防万一有人有同样的问题

于 2013-06-16T11:17:28.333 回答
0

我有些如何得到他的正确

b4 我的路径末尾没有“\”,所以我将路径与“\”连接起来,并将其放入另一个变量中,然后将该变量传递给 DIR 函数(这不起作用)但现在我添加了“\”在输入本身的文件夹路径的末尾,我将该变量传递给 DIR 它现在可以工作

'            checking the available files
filenm = Dir(File_pth)
Do Until filenm = ""
ActiveSheet.Cells(ctr, 12).Value = filenm
ctr = ctr + 1
filenm = Dir()
Loop
于 2013-05-22T05:10:25.487 回答