Страницы: 1
RSS
VBA Записать формулу в книге со ссылкой на вторую книгу
 
Добрый день! Прошу помочь с советом.

Задача: В книге в определенную ячейку записать формулу, в которой будут ссылки на вторую книгу.
Первая книга выгружается из софта, поэтому макрос нужно хранить в личной книге макросов.
Вторая книга каждый раз разная, поэтому открываю ее с помощью Application.GetOpenFilename.

Ниже примерный код, который не работает. Формулу ВПР сильно упростил, она гораздо длиннее и ссылок на вторую книгу в ней несколько

Код
Sub Formula()

    Dim sFilename As String, MyWb As Workbook
    sFilename = Application.GetOpenFilename
    Set wb = ActiveWorkbook
    Set MyWb = Workbooks.Open(sFilename)

    wb.Activate
    Range("A5").Formula = "=(VLOOKUP([MyWb]Свод!$1:$1048576,1,FALSE)"

End Sub
 
Что-то типа этого:
Код
Sub Formula()

    Dim sFilename As String, MyWb As Workbook
    sFilename = Application.GetOpenFilename
    If sFilename = "" Then
        Exit Sub
    End If
    Set wb = ActiveWorkbook
    Set MyWb = Workbooks.Open(sFilename)

    wb.Activate
    Range("A5").Formula = "=(VLOOKUP('[" & MyWb.Name & "]Свод'!$1:$1048576,1,FALSE)"

End Sub
обратите внимание на апострофы: они обязательны нужны, если в имени книги или листа будут "неугодные" символы(вроде пробела, точки и т.п.).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
В формулу нужно подставлять путь до файла книги, а не объект
 
?
Код
Range("A5").Formula = "=VLOOKUP('[" & MyWb.Name & "]Свод'!$1:$1048576,1,FALSE)"

П.С. Раз Вы используете макросы, то и значение из Открытой книги получайте средствами VBA, а не формулой. ИМХО
Изменено: Sanja - 28.11.2023 10:40:22
Согласие есть продукт при полном непротивлении сторон.

Контакты, благодарности
 
Дмитрий(The_Prist) Щербаков, Спасибо за наводку, пробовал ссылаться на книгу через " & MyWb & ", но чтобы подставить .name знаний уже не хватило.
В итоге сделал как Вы написали, но макрос все равно спотыкается на формуле с ошибкой application defined object defined error.

Для примера сделал 2 файла, макрос в первой книге.
Что я делаю не так?
 
видимо, скобка перед VLOOKUP лишняя :)
я думал Вы просто код для примера приложили и не стал сильно вглядываться и делать на этом акцент, посчитав, что все равно будете переносить в свои длинные формулы.
Изменено: Дмитрий(The_Prist) Щербаков - 28.11.2023 11:03:02
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Sanja, Согласен, что к этому нужно стремиться, но пока знаний как писать формулы макросом не хватает.
Второй момент - задача прописать макросом формулу и оставить ее, т.е. важно получить не значение, а именно формулу.

Если на примере подскажете как сослаться на вторую книгу, буду благодарен!
 
Цитата
написал:
видимо, скобка перед VLOOKUP лишняя
Дмитрий(The_Prist) Щербаков,  :oops: все так и макрос сработал! Спасибо большое!

Проблема решена.
Страницы: 1
Наверх