Страницы: 1
RSS
VBA: Автоматическая проверка и установка надстройки в ленту без вспомогательных файлов
 
Коллеги, добрый день,

Заранее прошу прощения, я знаю, что таких тем миллион: я поиском пользоваться умею и смотрел предложенные варианты, но все равно хочу спросить здесь.

Дано: есть надстройка, которая периодически пополняется новыми кнопками и около 30 пользователей.
Нужно: чтобы надстройка (.xlam), после того, как пользователь дважды кликнет на неё, попала в дефолтную папку для надстроек и установилась пользователю в ленту. Само собой, если такая уже есть и она активна, нужно проверочное условие.

Главное отличие от всех способов, которые я встречал: то, что я открываю не вспомогательный файл с кодом, а саму надстройку; для меня это принципиальный момент. Соответственно, меня в принципе интересует, возможно ли практически сделать так, как я описал выше, и если да, то как?

Ниже код, который у меня есть на данный момент, он расположен в ThisWorkbook надстройки. На этапе FileCopy ругается ошибкой (Permission denied)

Код
Private Sub Workbook_Open()
    Dim sFullFileName$, sFolder$, sFileName$
    sFileName = ThisWorkbook.Name
    sFullFileName = ThisWorkbook.FullName
    sFolder = Application.UserLibraryPath
    If Len(Dir(sFolder & sFileName)) = 0 Then
        FileCopy sFullFileName, sFolder
    Else
        MsgBox False
    End If
End Sub
 
Цитата
Framed написал:
пользователь дважды кликнет на неё, попала в дефолтную папку для надстроек
Сразу предупреждаю, я не макрушник, но раз уж вы открываете файл, который хотите скопировать, то не проще тогда не копировать его, а "сохранить как" по нужному пути. Подозреваю что у вас конфликт доступа к открытому файлу.
Вот горшок пустой, он предмет простой...
 
Попробуйте копировать таким методом
Код
a = "C:\Users\Книга.xlsx"
b = "D:\Книга.xlsx"
CreateObject("Scripting.FileSystemObject").GetFile(a).Copy b
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
PooHkrd, да, так и есть, вообще странно, что сам не догадался, спасибо вам.
Alemox, попробовал, помогло, пошел работать дальше, спасибо.
Страницы: 1
Наверх