Хорошо, я дошел до того, что код считывает данные из закрытой книги и может вставлять их в лист2 в этой книге. Это мой новый код:копирование из закрытой книги excel VBA
Sub Copy456()
Dim iCol As Long
Dim iSht As Long
Dim i As Long
'Fpath = "C:\testy" ' change to your directory
'Fname = Dir(Fpath & "*.xlsx")
Workbooks.Open ("run1.xlsx")
For i = 1 To Worksheets.Count
Worksheets(i).Activate
' Loop through columns
For iSht = 1 To 6 ' no of sheets
For iCol = 1 To 6 ' no of columns
With Worksheets(i).Columns(iCol)
If ((.Cells(1, 1).Value = "Time")) Then ' if first cell=Time then copy two columns
Range(.Cells(1, 2), .End(xlDown)).Select
Selection.Copy Destination:=Workbooks("Your Idea.xlsm").Worksheets("Sheet2").Columns((i + 1) + i).Cells(2, 1)
Worksheets("Sheet2").Cells(i * 2 + 1) = Worksheets(i).Name
Else
' do nothing
End If
End With
Next iCol
Next iSht
Next i
End Sub
Но как только я изменить эту часть кода:
Selection.Copy Destination:=Worksheets("Sheet2").Columns((i + 1) + i).Cells(2, 1)
в этот код:
Destination:=Workbooks("general.xlsx").Worksheets("Sheet2").Columns((i + 1) + i).Cells(2, 1)
Он перестанет работать выдачи сообщение об ошибке: «подписка из диапазона ". Файл general.xlsx - это пустой файл, который также закрыт.
При изменении кода в:
`Selection.Copy Destination:=Workbooks("Your Idea.xlsm").Worksheets("Sheet2").Columns((i + 1) + i).Cells(2, 1)
Затем выдаст ошибку: «1004 не может изменить часть объединенной ячейки». Файл «Your Idea.xlsm» - это файл, из которого я запускаю этот скрипт.
Любая помощь в решении этой проблемы?
попробуйте активировать лист в начале цикла и, возможно, использовать ActiveWorksheet.Columns или просто ws.Columns и то же самое для Несмотря на то, что они не бросают ошибки, поскольку вы можете ожидать, что вам нужно будет более явным, когда дело доходит до использования диапазонов и т. Д., Иначе VBA просто использует самый первый рабочий лист, а не каждый рабочий лист. –
«VBA просто использует самый первый рабочий лист, а не каждый рабочий лист» должен быть VBA просто использует активный лист ... –
Поскольку я не могу ответить на мои вопросы, я редактировал предыдущий вопрос с новым кодом и ne w проблем. Не могли бы вы снова взглянуть на него, пожалуйста? – novak100