2016-04-14 200 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