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

时间:2014-07-03 11:02:41

标签: excel vba directory

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

1 个答案:

答案 0 :(得分:0)

我对这条道路的看法是:

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

    Application.PathSeparator(变为" /"或" \"取决于   系统(Windows,Mac等)

    1. 您忘记了"/"c
    2. 之间的Cells(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。但也许你在这里使用它回到左上角(为了查看数据)

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

      您可以在On Error Resume Next之前添加

      if

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

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