Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 运行循环将变量添加到路径名以创建文件夹_Excel_Vba_Directory - Fatal编程技术网

Excel 运行循环将变量添加到路径名以创建文件夹

Excel 运行循环将变量添加到路径名以创建文件夹,excel,vba,directory,Excel,Vba,Directory,我有两个专栏,国家和商业。每个国家可能有4种类型的业务(采矿、卡车运输、航运、航班),每个国家至少有一种业务,例如 Country | Business --------------------- England mining England trucking Spain mining Germany mining Germany trucking Germany shipping Germany flights 我有大约170多个

我有两个专栏,国家和商业。每个国家可能有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

我看到的路径是:

  • 您尝试在字符串内部连接:
    “C:\Users\patelwa\Documents\macr\&C&”
  • 我不确定
    “\”
    “/”
    是否完全相同(我没有测试)。。。你可能也需要测试一下。正如@hnk所说,也许你可以使用
  • Application.PathSeparator(根据 系统(Windows、Mac等)

  • 您忘记了在
    c
    单元格(行,z)
  • 尝试此代码(您可能需要稍微调整)

    只是一个优化提示:避免
    。如果不是真的需要,请选择
    。但是您可以在这里使用它返回到左上角(以便查看数据)

    注意:此代码假定国家/地区名称与文件夹名称匹配…您可能还需要测试当前存在的国家/地区文件夹:如果不匹配,您将收到一个错误(错误恢复时由
    捕获下一步

    您可以在
    之前添加

    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中“\”是正确的。“&”和“\”当向路径中添加变量以运行循环以检入每个文件夹时,路径中的s使我困惑,不知将它们放在何处。您将我设置为正确的解决方案路径
    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