VBA импортирует модуль udf из надстройки в книгу

Итак, у меня есть надстройка .xlam с несколькими пользовательскими функциями. В качестве обходного пути к известной проблеме с абсолютным путем Я импортирую свою пользовательскую функцию в текущую рабочую книгу, чтобы пользовательские функции можно было вызывать из рабочей книги, а не из надстройки, используя следующий код:

Sub CopyOneModule()
Dim FName As String
On Error GoTo errhandler
With ThisWorkbook
    FName = .Path & "\code.txt"
    .VBProject.VBComponents("HMFunctions").Export FName
End With
ActiveWorkbook.VBProject.VBComponents.Import FName
MsgBox ("Functions successfully imported")
errhandler:
If Err.Number <> 0 Then
        Select Case Err.Number
        Case Is = 0:
        Case Is = 1004:
            MsgBox "Please allow access to Object Model and try again.", vbCritical, "No Access granted"
        End Select
End If

Кажется, он работает нормально. Итак, мой (вероятно, глупый) вопрос: есть ли способ сделать книгу с импортированными UDF «невидимыми» тем же модулем, который хранится в надстройке? Это необходимо, чтобы избежать следующей ситуации, которая может быть очень запутанной:

Заранее спасибо.


person Salabon11    schedule 27.02.2016    source источник
comment
Не могли бы вы просто выгрузить или отключить надстройку? В противном случае вы могли бы заменить текст в текстовом файле перед импортом?   -  person snoopen    schedule 27.02.2016
comment
Например, надстройка может иметь udf, помеченный как Private, который вы можете удалить в текстовом файле.   -  person snoopen    schedule 27.02.2016
comment
Большое спасибо! Я сделал простую замену в своем фиктивном текстовом файле, и теперь все работает так, как я хочу.   -  person Salabon11    schedule 27.02.2016


Ответы (1)


Удаление личных меток из временного текстового файла, как было предложено snoopen, сработало как шарм. Вопрос закрыт. Вот окончательный код, который я использую для импорта:

    Sub CopyOneModule()
Dim FName As String
Dim FileContent As String
Dim TextFile As Integer
Dim ws As Workbook

Set ws = ActiveWorkbook

On Error GoTo errhandler
With ThisWorkbook
    FName = .Path & "\code.txt"
    .VBProject.VBComponents("HMFunctions").Export FName
End With

TextFile = FreeFile
Open FName For Input As TextFile
FileContent = Input(LOF(TextFile), TextFile)
Close TextFile
FileContent = Replace(FileContent, "Private", "")
TextFile = FreeFile
Open FName For Output As TextFile
Print #TextFile, FileContent
Close TextFile

ws.VBProject.VBComponents.Import FName
MsgBox ("Functions successfully imported")
errhandler:
If Err.Number <> 0 Then
        Select Case Err.Number
        Case Is = 0:
        Case Is = 1004:
            MsgBox "Please allow access to Object Model and try again.", vbCritical, "No Access granted"
        End Select
    End If

End Sub
person Salabon11    schedule 28.02.2016