【问题标题】:Running a loop to add a variable into pathname to create folders运行循环以将变量添加到路径名中以创建文件夹
【发布时间】:2023-03-23 18:15:01
【问题描述】:

我有两个专栏,国家和商业。每个国家/地区可能有 4 种业务类型(采矿、货运、航运、飞行),每个国家/地区至少有一种业务,例如

Country  | Business
---------------------
England     mining
England     trucking
Spain       mining
Germany     mining
Germany     trucking
Germany     shipping
Germany     flights

我有大约 170 多个国家/地区的文件夹。我需要在每个国家/地区为其拥有的特定业务创建文件夹。我的路径有问题。这是代码的一部分。我朝着正确的方向前进吗?

Dim z As Integer
Dim row,col,c As String


ActiveSheet.Range("A2").Select

For row = 2 To maxrows
col = 2
z = col + 1
c = Cells(row, col)


If Len(dir("C:\Users\patelwa\Documents\macr\& c &" & Cells(row, z), vbDirectory)) = 0 Then
MkDir ("C:\Users\patelwa\Documents\macr\& c &" & Cells(row, z))

On Error Resume Next
End If
Next row

【问题讨论】:

    标签: excel vba directory


    【解决方案1】:

    我看到的路径是:

    1. 您尝试在字符串内连接:"C:\Users\patelwa\Documents\macr\& c &"
    2. 我不确定"\""/" 是否完全相同(我没有测试过)......您可能也需要测试一下。正如@hnk 所说,也许你可以使用

    Application.PathSeparator(根据 系统(Windows、Mac 等)

    1. 你忘记了cCells(row,z) 之间的"/"

    试试这段代码(你可能需要稍微调整一下)

    Dim z As Integer
    Dim row,col,c As String
    Dim foldername As String
    
    ActiveSheet.Range("A2").Select    ' I don't get the point of that line
    
    For row = 2 To maxrows
    
        col = 2
        c = Cells(row, col)
    
        foldername = "C:/Users/patelwa/Documents/macr/" & c & "/" & Cells(row, col+1)
    
        If Dir(foldername, vbDirectory) = "" Then                   
    
            MkDir (foldername)
            On Error Resume Next
    
        End If
    
    Next row
    

    只是一个优化提示:如果不是真的需要,请避免使用 .Select。但也许你在这里用它回到左上角(为了查看数据)

    注意: 此代码假定国家/地区名称与文件夹名称匹配...您可能还需要测试当前存在的国家/地区文件夹:如果不是,您将收到错误消息(由 @987654329 捕获@)

    你可以在if之前添加类似的东西

    If Dir("C:/Users/patelwa/Documents/macr/" & c, vbDirectory) = "" Then
    
       MkDir ("C:/Users/patelwa/Documents/macr/" & c)
       ' On Error Resume Next  ' If you want to use that ...
    
    End If
    

    根据需要创建国家文件夹。

    最后一点:检查用于文件夹名称的单元格中没有空格或特殊字符(但我想你已经检查过了)

    【讨论】:

    • 谢谢。是一个很大的帮助。 Windows 中的“\”是正确的。路径中的“&”和“\”让我感到困惑,因为在将变量添加到路径以通过循环检查每个文件夹时将它们放在哪里.你让我走上了解决问题的正确道路
    猜你喜欢
    • 2021-02-28
    • 1970-01-01
    • 2023-04-09
    • 2012-03-13
    • 2020-06-22
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多