2016-01-14 22 views
0

我有啓用宏的Excel文件,我想將這些文件中的值合併到一個新文件中。我編寫了以下宏,它導航到每個文件中的特定單元格,並將其彙總到一個新的合併文件中。使用宏訪問啓用宏的文件

Sub SumWB() 
    Dim Arr(2) As Long, MyWB As Workbook, fStr As String 
    Const Folder = "C:\Users\user123\Downloads\New folder\" 
    file = Dir(Folder) 
    While (file <> "") 

    If file <> "Consolidated.xlsm" Then 
     Set MyWB = Workbooks.Open(Folder & file, , True) 
     ThisWorkbook.Sheets(2).Range("B4") = Arr(0) + MyWB.Sheets(1).Range("B4").Value 
     ThisWorkbook.Sheets(2).Range("C4") = Arr(0) + MyWB.Sheets(1).Range("C4").Value 
     ThisWorkbook.Sheets(2).Range("D4") = Arr(0) + MyWB.Sheets(1).Range("D4").Value 
     ThisWorkbook.Sheets(2).Range("E4") = Arr(0) + MyWB.Sheets(1).Range("E4").Value 
     ThisWorkbook.Sheets(2).Range("F4") = Arr(0) + MyWB.Sheets(1).Range("F4").Value 
     ThisWorkbook.Sheets(2).Range("G4") = Arr(0) + MyWB.Sheets(1).Range("G4").Value 
     ThisWorkbook.Sheets(2).Range("H4") = Arr(0) + MyWB.Sheets(1).Range("H4").Value 
     ThisWorkbook.Sheets(2).Range("I4") = Arr(0) + MyWB.Sheets(1).Range("I4").Value 
     ThisWorkbook.Sheets(2).Range("J4") = Arr(0) + MyWB.Sheets(1).Range("J4").Value 
     ThisWorkbook.Sheets(2).Range("K4") = Arr(0) + MyWB.Sheets(1).Range("K4").Value 
     ThisWorkbook.Sheets(2).Range("L4") = Arr(0) + MyWB.Sheets(1).Range("L4").Value 
     ThisWorkbook.Sheets(2).Range("M4") = Arr(0) + MyWB.Sheets(1).Range("M4").Value 
     ThisWorkbook.Sheets(2).Range("N4") = Arr(0) + MyWB.Sheets(1).Range("N4").Value 
     MyWB.Save 
     MyWB.Close 
    End If 
    file = Dir 
    Wend 

End Sub 

我得到Run time error '13' : Type Mismatch。錯誤指向範圍(「C4」)線。

另一個問題是,一旦打開了啓用宏的文件,同時將其保存爲「the file is a read only. To save a copy, click OK, then give the workbook a new name in the Save as dialog box」。這破壞了整個過程自動化的目的。因爲我不想手動打開和關閉所有這些文件。有沒有辦法可以避免這種情況?

回答

0

如果你剛剛拉出文件的信息,我不知道你爲什麼會需要保存它們。既然你打開它們只讀,這會阻止你保存並生成該消息。我只想刪除myWB.Save線。如果仍然以提示保存更改結束,請將替換爲myWB.Close(False)關閉而不保存更改。

關於類型不匹配,有可能工作簿中的值不是數字嗎? (添加5 + "5 "將導致一個類型不匹配,而不是10

+0

所有單元格中的值僅是1。有沒有辦法找到哪個單元格不是數字?從B4:N4的範圍僅爲1。出於測試目的,我一直保持這樣的狀態,整合後的文件在相同的B4:N4範圍內有0個。儘管如此,我仍然遇到了C4代碼中的不匹配錯誤。 P.S發生此錯誤時,在後臺可以看到文件中的值。一旦我關閉錯誤和調試,價值消失 –

+0

可能做的是增加前測試通過'IsNumeric'功能從'MyWB'價值的最好的事情。或者,當它進入調試模式時,查看「MyWB」是什麼工作簿,然後查看Sheet1上C4的值,看看是否能夠了解發生了什麼。 –