Запуск / вызов Sub из другого проекта VBA (с входами) - PullRequest
0 голосов
/ 05 мая 2018

Я долго искал, но, похоже, у меня ничего не работает. Я пытаюсь запустить Public Sub из файла Personal.xlsb , который добавляет метку времени, когда ячейка изменяется на ячейку в той же строке изменения. Этот Public Sub должен быть вызван Private Sub Worksheet_Change(ByVal Target As Range) в Sheet Project изменения.

Я сейчас пытаюсь Application.Run("'PERSONAL.XLSB'!CaptureTime",Target), но VBA не распознает код. Я также попробовал Call в нескольких формах и некоторых других вещах.

Причина, по которой я не хочу создавать модуль в том же Листовом проекте , заключается в том, что у меня большая часть кода защищена в Персональном файле. Один из макросов в файле Personal создает отчет для моей компании, а также добавляет код VBA в новый лист отчета, чтобы взять отметку времени, и защищает большинство ячеек в нем (чтобы избежать манипулирования данными ). Я хочу переместить этот код из Sheet Project в мой Personal файл и просто вызывать этот код штампа времени каждый раз, когда происходит изменение в листе. Таким образом, никто не мог видеть пароль на листах при доступе к VBA.

1 Ответ

0 голосов
/ 06 мая 2018

В вашем случае я бы добавил ссылку на ваш personal.xlsb, как описано здесь . Описание для AddIn, но это то же самое. И тогда вы можете позвонить своему сабу напрямую

Sub TestIt
    CaptureTime par1, par2, ...  'In case you have parameters par1, par2, .. for the sub
End Sub

Если вы не хотите пользоваться ссылкой, попробуйте следующий код

Sub NoReference()

Dim wb As Workbook
Dim Par1
Dim Par2

    Set wb = Workbooks("PERSONAL.XLSB")
    Application.Run "'" & Replace(wb.Name, "'", "''") & "'!NoPar"
    Application.Run "'" & Replace(wb.Name, "'", "''") & "'!PassPar", Par1, Par2

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...