Копирование диапазонов из одной рабочей книги в другую - PullRequest
0 голосов
/ 07 марта 2019

У меня есть рабочая тетрадь с тремя листами. RC, RI, RCB. Мне нужно написать код VBA, который будет копировать диапазоны из этой книги и вставлять ее во вновь созданную книгу.

В этом коде все работает, кроме листа RCB. Отладка включается по линии 12

Sub Budget()
With Workbooks.Add
ActiveSheet.Name = "RC"
ThisWorkbook.Worksheets("RC").Range("A:D").Copy .Worksheets("RC").Range("A1")
ThisWorkbook.Worksheets("RC").Range("E:G").Copy .Worksheets("RC").Range("E1")
Sheets.Add
ActiveSheet.Name = "RI"
ThisWorkbook.Worksheets("RI").Range("A:E").Copy .Worksheets("RI").Range("A1")
ThisWorkbook.Worksheets("RI").Range("G:G").Copy .Worksheets("RI").Range("G1")
Sheets.Add
ActiveSheet.Name = "RCB"
ThisWorkbook.Worksheets("RCB").Range("A:C").Copy .Worksheets("RCB").Range("A1")
ThisWorkbook.Worksheets("RCB").Range("E:E").Copy .Worksheets("RCB").Range("G1")
.SaveAs "C:\Users\lomid\Desktop\4finansi3"
.Close
End With
End Sub

Я думаю, что речь идет об активном листе и рабочей тетради. это ошибка, которая дает мне: «Ошибка времени выполнения 9: индекс вне диапазона»

1 Ответ

0 голосов
/ 07 марта 2019

Вы можете обойтись без всего копирования / вставки. Когда вы используете SaveAs для сохранения текущей рабочей книги, оригинальная рабочая книга будет закрыта без сохранения, а новая рабочая книга будет открыта. Из того, что я могу сказать по вашему вопросу, вы хотите оставить только определенные столбцы. Мне нравится удалять ненужные столбцы и делать SaveAs для нового имени книги. Код ниже намного чище. Используйте Application.DisplayAlerts = False, чтобы не получать приглашение The following features cannot be saved in macro-free workbooks:.

Application.DisplayAlerts = False
    With ThisWorkbook
        .Sheets("RC").Range("H:Z").EntireColumn.Delete
        .Sheets("RI").Range("H:Z, F:F").EntireColumn.Delete
        .Sheets("RCB").Range("F:Z, D:D").EntireColumn.Delete

        .SaveAs "C:\Users\lomid\Desktop\4finansi3.xlsx"
    End With
Application.DisplayAlerts = True 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...