Я пытаюсь использовать VBA, чтобы облегчить себе жизнь, но у меня постоянно возникают проблемы, с которыми я не могу справиться. По сути, я хочу скопировать некоторые значения из нескольких выходных CSV-файлов, которые у меня есть, в хорошо отформатированный файл excel. Затем в соответствии с некоторыми базовыми числами удалите значения или отформатируйте ячейки.
Однако я продолжаю получать одно и то же сообщение об ошибке. Ошибка времени выполнения «1004», ошибка, определяемая приложением или объектом. Я делаю это, используя множество выходных файлов и вставляя значения в один и тот же файл таблицы, но на разные листы (10.2a, 10.2b, 10.2c,...), имея макросы для каждого листа. Я запускаю все макросы в одном, используя другой макрос, который содержит все остальные макросы. Я много смотрел в других сообщениях, но не понимаю, откуда берется ошибка. Любая помощь приветствуется. Код, который я использую для одного листа, приведен ниже в качестве примера.
Sub Table_10_2a()
'
' Copy Data from one file to another
'
Dim Output As Workbook
Dim Table As Workbook
Dim i As Integer
'Open workbooks
Set Output = Workbooks.Open("O:\...\Output.csv")
Set Table = Workbooks.Open("O:\...\Table.xlsx")
'Copy paste data from output file to Table
Output.Sheets("Output1").Range("B3:E7").Copy
Table.Sheets("10.2a").Range("B11").PasteSpecial xlValues
Output.Sheets("Output1").Range("B9:E13").Copy
Table.Sheets("10.2a").Range("B17").PasteSpecial xlValues
Output.Sheets("Output1").Range("B15:E15").Copy
Table.Sheets("10.2a").Range("B23").PasteSpecial xlValues
Output.Sheets("Output1").Range("B17:E21").Copy
Table.Sheets("10.2a").Range("B26").PasteSpecial xlValues
Output.Sheets("Output1").Range("B23:E27").Copy
Table.Sheets("10.2a").Range("B32").PasteSpecial xlValues
Output.Sheets("Output1").Range("B29:E29").Copy
Table.Sheets("10.2a").Range("B38").PasteSpecial xlValues
Output.Sheets("Output1").Range("B30:E30").Copy
Table.Sheets("10.2a").Range("B40").PasteSpecial xlValues
For i = 2 To 5
'Delete cells for values below 30
If Table.Sheets("10.2a").Cells(40, i).Value < 30 Then
Table.Sheets("10.2a").Range(Cells(26, i), Cells(36, i)).ClearContents
Table.Sheets("10.2a").Cells(38, i).NumberFormat = """[""0""]"""
Table.Sheets("10.2a").Cells(40, i).NumberFormat = """[""0""]"""
End If
'Format cells for values below 50
If Table.Sheets("10.2a").Cells(40, i).Value < 50 And Table.Sheets("10.2a").Cells(40, i).Value > 30 Then
Table.Sheets("10.2a").Range(Cells(26, i), Cells(38, i)).NumberFormat = """[""0.0""]"""
Table.Sheets("10.2a").Cells(40, i).NumberFormat = """[""0""]"""
End If
Next i
'Save file
Table.Save
'Close files
Output.Close
Table.Close
End Sub
Table
не является ActiveWorkbook во время выполнения (похоже, что это ActiveWorkbook). В противном случае может произойти 1004, если рабочий лист защищен (хотя я ожидаю, что методPasteSpecial
вызовет ошибку в этом случае. Сообщите нам, где происходит ошибка, и ее будет легче устранить. - person David Zemens   schedule 18.07.2014