Передача переменной в Excel VBA с использованием C # и запуск сценария VBA - PullRequest
0 голосов
/ 21 февраля 2019

Позвольте мне начать с того, что я понятия не имею, что я делаю ... Итак, я поручил компании создать код на C #, который пытается просмотреть некоторые папки, и когда появляется новый файл, он вводит файлпуть в виде строки в код Excel VBA.Итак, вот моя проблема.Допустим, путь к файлу - «D: \ testFile», работает приведенный ниже код:

Sub test5(Path As String)
    MsgBox Path, vbInformation
End Sub

. В нем отображается окно с сообщением D: \ testFile, а приведенный ниже код работает:

Sub test1()
    Workbooks.Open Filename:="D:\testFile"
End Sub

Открывает файл.И, конечно, это также работает:

Sub test2()
    Path = "D:\testFile"
    Workbooks.Open Filename:=Path
End Sub

И, конечно, это работает:

Sub test3()
    Path = "D:\testFile"
    X = Path
    Workbooks.Open Filename:=X
End Sub

Однако этот код не работает:

Sub test4(Path As String)
    X = Path
    Workbooks.Open Filename:=X
End Sub

Я думаю,Стоит отметить, что приведенный ниже код также не работает.

Sub test6(Path As String)
    MsgBox Path, vbInformation
    Workbooks.Open Filename:="D:\testFile"
End Sub

Он отображает MsgBox, но не открывает testFile ... Обратите внимание, что строка, открывающая тестовый файл, не получает никакого вводаиз C # ... так что, если строка с окном сообщений работает ... так должна открываться строка ... Так ... в основном ... Как заставить тест № 4 работать?См. Тест № 4 снова ниже:

Sub test4(Path As String)
    X = Path
    Workbooks.Open Filename:=X
End Sub

Я думаю, что строка, вводимая из программы на C #, не годится ... но не похоже, что тест № 6 не приведет кРабота.Кроме того, код Excel VBA был сохранен в модуле.Но код C # был создан с помощью тестового файла Excel VBA, который был в листе.Поэтому я сохранил эти коды на листе, чтобы продублировать его тестовый файл (то есть ... щелкните правой кнопкой мыши по Sheet1 и просмотрите код).Насколько я понимаю, это не очень хорошая практика, и конечный продукт должен иметь код Excel VBA в модуле.(просто упомяну это в случае, если это имеет отношение к тому, почему это может не работать) Кроме того, стоит упомянуть, что единственное, что проверял этот внешний кодер, это окно сообщения ... и, конечно, то же самое, что я нашел ..., которое работает.

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