Я пытаюсь настроить макрос VBA для циклического просмотра всех открытых файлов и вставки одинакового диапазона ячеек в каждую рабочую книгу в цикле.По сути, я смог сделать обратное этому процессу с помощью простого макроса ниже (LoopEachOpenWorkbook). Я скопировал диапазон из каждой открытой рабочей книги и вставил его в центральную рабочую книгу, чтобы собрать все данные.
Sub LoopEachOpenWorkbook()
Dim wb As Workbook
For Each wb In Workbooks
If wb.Name <> "FILE NAME.xlsm" Then
wb.Activate
ActiveWindow.WindowState = xlNormal
Sheets("Sheet1").Select
Range("A2:S20").Select
Selection.Copy
Windows("FILE NAME.xlsm").Activate
Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1).Select
ActiveSheet.Paste Link:=True
End If
Next wb
End Sub
Я подумал, что смогу использовать аналогичный метод для обновления каждой книги новым набором данных.Я попытался сделать это с помощью макроса, указанного ниже (Обновление матрицы).Я надеялся, что смогу просто скопировать нужные данные, чтобы они были в буфере обмена, а макрос просто вставил то, что уже было в буфере обмена.Я также попробовал это с включением копии в макрос, но до цикла.Независимо от того, что я пытаюсь, я все равно получаю сообщение об ошибке в строке кода для вставки.Я пробовал разные способы вставки, и я все еще получаю сообщение об ошибке.
Sub Update Matrix()
Dim wb As Workbook
For Each wb In Workbooks
If wb.Name <> "FILE NAME.xlsm" Then
wb.Activate
ActiveWindow.WindowState = xlNormal
Sheets("Sheet 1").Select
ActiveSheet.Unprotect "password"
Range("A5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveSheet.Protect "password", True, True
Sheets("Sheet 2").Select
End If
Next wb
Нужно ли включать копию в макрос и, кроме того, в цикл?Нужно ли мне возвращаться к исходной рабочей книге и переписывать диапазон при каждом добавлении в новую рабочую книгу в цикле?Любая помощь будет принята с благодарностью.
Спасибо.