Страницы: 1
RSS
"Слетают" ссылки на надстройки на разных компьютерах
 

Доброго времени суток!

На одном компьютере создаю файл «Книга1.xlsx». Вписываю формулу (из надстройки PLEX, к примеру) в ячейку A2 (скрин1).

Открываю на другом компьютере, на котором тоже установлена надстройка Plex, и начинаются ошибки (скрин2).

Если положить созданный файл в папку OneDrive на одном компьютере, а открыть из этой же OneDrive на другом, - надстройка вообще ссылается в облако (скрин 3).

Ели использовать пользовательские функции через персональную книгу макросов (Personal.xlsb), то проблем никаких нет, открывается и там, и тут.

Но тут другая проблемка – такая же персональная книга макросов должна быть и на другом компьютере, и в ней нельзя создать такую же панельку, как в XLAM (вкладка «PLEX», например).

И вопрос:

Что можно сделать, чтобы надстройки, созданные на одном компьютере, могли без проблем открываться и на другом? В том числе и через OneDrive.

 
Дело в том, что при записи UDF(коей является функция PLEX) и последующим закрытием Excel в книге с функцией хранится ссылка на PLEX, как на книгу, содержащую функцию. Примерно так же, как это было бы с той же ВПР, которая ссылается на другую книгу. Если другую книгу переместить - придется менять связи во вкладке данные. Здесь же все чуть сложнее. Я делал для своей надстройки такое. Ниже код, который должен быть создан для приложения на событие открытия любой книги. Здесь я описывал как это можно сделать: Как отследить событие(например выделение ячеек) в любой книге?
Сам код:
Код
Private Sub App_WorkbookOpen(ByVal Wb As Workbook) 
    Dim sMulTEx As String, sLnk, wsSh As Worksheet
    sMulTEx = UCase(ThisWorkbook.Name)
    On Error GoTo exit_
    With Wb
        For Each sLnk In .LinkSources(Type:=xlExcelLinks)
            If UCase(sLnk) Like "*" & sMulTEx Then
                If UCase(sLnk) <> sMulTEx Then
                    .ChangeLink Name:=sLnk, NewName:=sMulTEx
                    For Each wsSh In .Worksheets
                        wsSh.Calculate
                    Next
                End If
                Exit For
            End If
        Next
    End With
exit_:
End Sub
Код должен располагаться в самой надстройке.
Изменено: Дмитрий Щербаков - 05.04.2018 21:15:48
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо, Дмитрий. Разбираюсь.
 
Замечательная идея!
Владимир
 
Дмитрий Щербаков, еще раз спасибо. Заработало!

Еще вопрос по Personal.xlsb

В личной книге макросов есть некая функция, например, myFunc1.
Если на листе вводить "myFunc1", то вылезает ошибка. Если вводить "Personal.xlsb!myFunc1", то ошибки нет, и все работает.
Уверена, что я делаю что-то не так. Как можно избавиться от приставки "Personal.xlsb!"?

Спасибо.
 
Цитата
Diana Tailor написал:
Как можно избавиться от приставки "Personal.xlsb!"
никак. Переносите функцию в надстройку и тогда можно будет не указывать имя книги.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий Щербаков, еще раз спасибо!
 
Цитата
Дмитрий Щербаков написал:
Код
On Error GoTo exit_
А разве не работает
Код
On Error Exit Sub
 
Цитата
Шеврет написал:
А разве не работает
попробуйте. Если взлетит - можете применять в своих проектах :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий Щербаков написал:
Если взлетит - можете применять в своих проектах
:D
Шеврет, ну как бы есть некоторые не существенные ограничения для этого
https://msdn.microsoft.com/ru-ru/vba/language-reference-vba/articles/on-error-statement
:D  
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх