2014-07-03 57 views
0

我有兩個欄,國家和商業。有4種在每個國家(採礦,貨運,運輸,航班)可能的企業,每個國家都有ATLEAST一個企業如運行一個循環來添加一個變量到路徑名來創建文件夾

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 

回答

0

我看到的路徑是什麼:

  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。但是,也許你在這裏使用它來回到左上角(以便查看數據)

注意:此代碼假定國家名稱與文件夾名稱匹配......您可能還需要測試該國目前的文件夾存在:如果沒有你會得到一個錯誤(由On Error Resume Next逮住)

您可以像

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 

如果需要創建國家文件夾中的if東西前加。

最後一個音符:檢查你沒有在使用的文件夾名稱細胞空格或特殊字符(不過,我想你已經選中)

+0

謝謝。是一個很大的幫助。在窗口中,「\」是正確的。路徑中的「&」和「\」讓我感到困惑,因爲將變量添加到路徑中以便檢查每個文件夾。您將我設置在解決方案的正確路徑上 – user3789725

相關問題