[VBA] Вставить похожие формулы в другую книгу

Neoneta

Новый пользователь
Сообщения
31
Реакции
1
// Перенесено из темы: https://www.safezone.cc/threads/vba-rabota-so-spiskom-ssylok.42175/#post-323439

Добрый вечер.
Вы простите за назойливость, но нет больше кого спросить.
Как вставить несколько ячеек с формулами (формула одинакова для всех файлов)?
='дані договору'!L17
='дані договору'!L18
='дані договору'!N17
='дані договору'!N18

Взяла ваш скрипт...попыталась изменить но ругается там где жирным шрифтом.
И номер листа не всегда удобно, как можно на конкретное имя заменить с wb.Sheets(2) на Sheets("лютий")


'Лист "лютий" вставить из буфера формулы
wb.Sheets(2).Range("D6").Select
ActiveSheet.Paste
wb.Close SaveChanges:=True


Код:
Function FileExists(path As String) As Boolean

    FileExists = CreateObject("Scripting.FileSystemObject").FileExists(path)

End Function



Sub MarkAll()

    Dim personCode As String

    Dim baseSheet As Worksheet

    Dim path As String

    Dim wb As Workbook

    Dim y As Long

    Set baseSheet = ThisWorkbook.ActiveSheet

    For y = 2 To baseSheet.Cells(Cells.Rows.Count, "B").End(xlUp).Row

        path = baseSheet.Cells(y, "B").Value

        If FileExists(path) Then

            Set wb = Workbooks.Open(Cells(y, "B").Value, UpdateLinks:=False)

            If Not (wb Is Nothing) Then

                personCode = baseSheet.Cells(y, "C")

            'Лист "лютий" вставить из буфера формулы

                wb.Sheets(2).Range("D6").Select

                ActiveSheet.Paste

                wb.Close SaveChanges:=True

            End If

        End If

    Next

End Sub
 
Последнее редактирование модератором:
Откуда и куда вставить? С одной книги в другую? В ячейку D6 первую формулу, а остальные в какую ячейку.
Напишите подробнее. По вашему коду непонятно.
 
И номер листа не всегда удобно, как можно на конкретное имя заменить с wb.Sheets(2) на Sheets("лютий")
Тут надо решать проблему с вашей системой, или установленным Excel-ем. Создайте новую тему, там попробуем выяснить, что именно не так.
 
Вообщем, я выяснил, как починить названия листов. Создайте новую тему и я распишу, как.
 
Откуда и куда вставить? С одной книги в другую? В ячейку D6 первую формулу, а остальные в какую ячейку.
Напишите подробнее. По вашему коду непонятно.
В основе идёт список со ссылками. Ссылки в колонке В. Планировала открыть каждую ссылку, по ссылке перейти на лист "лютий" и там в ячейки d6:d9 вставить эти формулы. Я хотела просто из буфера обмена вставлять. Но могу их в основной файл с ссылками разместить. Например ячейки с формулами будут d2:d5
 
Последнее редактирование:
Быстрее будет работать, если сделаете напрямую (без буфера обмена), и потом:
Код:
wb.Sheets(2).[D6].FormulaR1C1Local = baseSheet.[D1].FormulaR1C1Local
wb.Sheets(2).[D7].FormulaR1C1Local = baseSheet.[D2].FormulaR1C1Local
wb.Sheets(2).[D8].FormulaR1C1Local = baseSheet.[D3].FormulaR1C1Local
wb.Sheets(2).[D9].FormulaR1C1Local = baseSheet.[D4].FormulaR1C1Local

Но прямой ответ на ваш вопрос, почему ошибка - такой: прежде чем делать Select, лист необходимо сделать активным, т.е. чтобы он появился на переднем плане. Для этого перед командой Select, необходимо выполнить:
Код:
wb.Sheets(2).activate
 
По ранее написанным Вами кодом подсмотрела, что там имя листа можно было писать, и решилась на пробу заменив
с
wb.Sheets(2).[D6].FormulaR1C1Local = baseSheet.[D1].FormulaR1C1Local
wb.Sheets(2).[D7].FormulaR1C1Local = baseSheet.[D2].FormulaR1C1Local
wb.Sheets(2).[D8].FormulaR1C1Local = baseSheet.[D3].FormulaR1C1Local
wb.Sheets(2).[D9].FormulaR1C1Local = baseSheet.[D4].FormulaR1C1Local
на
wb.Worksheets("лютий").[D6].FormulaR1C1Local = baseSheet.[D2].FormulaR1C1Local
wb.Worksheets("лютий").[D7].FormulaR1C1Local = baseSheet.[D3].FormulaR1C1Local
wb.Worksheets("лютий").[D8].FormulaR1C1Local = baseSheet.[D4].FormulaR1C1Local
wb.Worksheets("лютий").[D9].FormulaR1C1Local = baseSheet.[D5].FormulaR1C1Local
и все хорошо пошло!
 
Назад
Сверху Снизу