2016-04-14 201 views
1

在尋求進一步永遠不會做anythign手動以後再 我做的,你必須把一個文件夾中使用具有待處理的特定文件的it.xlsm。do while循環不循環也不做

此it.xslm具有三個模塊:

主文件 - 重命名用C
類別-makes用C
每類工作表 -saves那些工作表作爲.xslx。這導致8個新文件在/ DEPARTEMENT文件夾

Littlefiles
-renames在電子商務
類別 -makes選項卡每個類別
-cleans了空列。

佔位
打開與數據 .xls的適用主文件
打開的主文檔
使標籤和清理空列創建的所有文件。

佔位符代碼:

Sub OpenBigFile() 
Dim wb As Workbook 

Dim ws As Worksheet 
Dim Lastrow As Long 
'open main file, apply masterfile moduke 
Set wb = Workbooks.Open(ThisWorkbook.path & "\Depositformulier (Reacties).xlsx") 

Call masterfile.total 

wb.Close SaveChanges:=True 

End Sub 

這工作得很好。

Sub OpenAllFiles() 
Dim wb As Workbook 
Dim myPath As String 
Dim myFile As String 


    myPath = ThisWorkbook.path & "\" & "Departement" & "\" 
    myFile = Dir(myPath & "*.xlsx") 


    Do While Len(Filename) > 0 
    DoEvents 
    Set wb = Workbooks.Open(myPath & myFile, True, True) 

     Call LittleFiles.total 

     wb.Close False 

     myFile = Dir 
    Loop 


End Sub 

這裏我發現自己有問題。我試圖用很多例子重寫它很多次,但總是好像被卡住了Set wb = Workbooks.Open(Filename:=myPath & myFile)

我在做什麼錯? 你需要我的Littlefiles代碼嗎?

而且,在一般情況下,是正確的,「的ThisWorkbook」總是指this.xlm,即使在平均時間另一個工作簿處於活動狀態(這是ActiveWorkbook)?

多謝

回答

0

東西這裏是我的嘗試,我覺得這樣就更難去錯了,因爲你將文件的完整路徑已存儲:

Sub OpenAllFiles() 
'create an array 
Dim myFiles As Variant 
ReDim myFiles(500) 

myPath = ThisWorkbook.Path 

If Right(myPath, 1) <> "\" Then 
myPath = myPath & "\" 
End If 


'search for at least 5 files in the folder specified above, add the entire path to the array 
While myCount < 5 
    If Dir(myPath & "*.xlsm") <> "" Then 
    potentialFileToLoad = Dir(myPath & "*.xlsm") 
    While potentialFileToLoad <> "" 
     myFiles(myCount) = myPath & potentialFileToLoad 
     myCount = myCount + 1 
     potentialFileToLoad = Dir 
    Wend 

    End If 
Wend 

'change size of array to ammount of files found 
ReDim Preserve myFiles(myCount - 1) 

For Each ii In myFiles 

'(Insert Open, Run code, close code here) 
Workbooks.Open (ii), True, True 

Call LittleFiles.Total 

ActiveWorkbook.Close 

Next ii 

End Sub 
+0

通過完整路徑allready存儲您的意思是'「C:\ Users \ BillyBob \ Documents \ Reports \ Department \」?因爲該文件不應該有一個固定的位置。你認爲問題是Thisworkbook.path? 編輯:一個msgbox myPath似乎給我正確的路徑... – Lara

+0

可能是問題,因爲如果工作簿不是在以「部門」結尾的文件路徑中,那麼它不會工作。 例如,如果文件位於C:\ Users \ BillyBob \ Documents \ Reports 中,並且您將「\ Department \」添加到路徑中。那麼它不會找到這些文件。 – Tabias

+0

剛剛使用這個工作簿路徑編輯了我的原始答案。你能看看它是否有效嗎? – Tabias

0

嘗試與此類似

path = "path2folder" & "\" 'this is fairly important and probably why your code breaks?_ 
           you cant add the backslash like you do above 
Filename = Dir(path & "*.xl??") 

Do While Len(Filename) > 0 
    DoEvents 
    Set wbk = Workbooks.Open(path & Filename, True, True) 
     'add your code 
    wbk.Close False 
    Filename = Dir 
Loop 
+0

謝謝。我怎麼會指定的路徑是*無論這個文件現在是」 +中的子文件夾/ DEPARTEMENT?'mypath中= ThisWorkbook.path&‘\’&‘DEPARTEMENT’'? – Lara

+0

我認爲這是正確的。 –

+0

另外,爲什麼是有一個每個內部的do while循環嗎?每個元素的含義是什麼?我很困惑:) – Lara