Как я могу написать к консоли от Excel vba код?

Там какой-либо путь состоит в том, чтобы распечатать сообщение к консоли от Excel vba макрос? У меня есть маленькое консольное приложение.NET VB, которое называет макрос Excel, и я хотел бы, чтобы сообщения об ошибках из макро-кода распечатали к консоли. Debug.print не помогает, поскольку он только печатает к непосредственному окну. Какие-либо идеи?

12
задан Community 9 July 2018 в 18:41
поделиться

5 ответов

auto является модификатором, таким как static . Он определяет класс места хранения переменной. Однако, поскольку по умолчанию локальными переменными являются auto , обычно нет необходимости указывать их вручную.

На этой странице перечислены различные классы места хранения в C.

-121--784165-

Не могли бы Вы выполнить следующие запросы:

SELECT  COUNT(DISTINCT O_ID)
FROM    vEmployers
INNER JOIN
        vEnrolment
ON      O_ID = E_EnrolmentEmployer
WHERE   E_START >= '01-AUG-2008' AND
        E_START < '01-AUG-2009'
        AND O_ID IN
        (
        SELECT  O_ID
        FROM    vEmployers
        INNER JOIN
                vEnrolment
        ON      O_ID = E_EnrolmentEmployer
        WHERE   E_Start < '01-AUG-2008'
                AND E_Start >= '01-AUG-2007'
        )

и

SELECT  DISTINCT TOP 5 O_ID
FROM    vEmployers
INNER JOIN
        vEnrolment
ON      O_ID = E_EnrolmentEmployer
WHERE   E_START >= '01-AUG-2008' AND
        E_START < '01-AUG-2009'
        AND O_ID IN
        (
        SELECT  O_ID
        FROM    vEmployers
        INNER JOIN
                vEnrolment
        ON      O_ID = E_EnrolmentEmployer
        WHERE   E_Start < '01-AUG-2008'
                AND E_Start >= '01-AUG-2007'
        )
ORDER BY
        O_ID

дословно, не изменяя ничего?

-121--3723758-

Я обнаружил, что нет связи между проектом VB .NET и макросом, который он вызывает - макрос не может получить доступ к консоли VB и не может отбросить исключение. Если в макросе возникает ошибка, она не обнаруживается кодом VB .NET. Проект VB просто вызывает макрос, он выполняется, и затем проект продолжает работать, не зная, что произошло в макросе. То, как я обошел это, было то, что макрос записал ошибку в определенную ячейку в электронной таблице Excel, а затем проект VB прочитал это и использовал его, чтобы определить, была ли ошибка, а затем записал ее на консоль, если она была. Вроде как чип, но он сработал. Спасибо за все предложения!

9
ответ дан 2 December 2019 в 05:27
поделиться

Пройдите его путь к файлу и напишите все ошибки в файл.

1
ответ дан 2 December 2019 в 05:27
поделиться

Вы можете создать COM-компонент в вашем приложении VB.Net, которое вы можете позвонить от VBA и записывать на Консоль вашей приложения.

0
ответ дан 2 December 2019 в 05:27
поделиться

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

Или, если это действительно ошибки, поднимите ошибки из макроса с помощью Err.Raise и обработайте их в .Net-коде с помощью блока Попробуйте Catch, который записывает детали в консоль.

0
ответ дан 2 December 2019 в 05:27
поделиться

Вы можете попробовать использовать Debug.WriteLine() для вывода отладочной информации в окно вывода Visual Studio Output, но у меня такое ощущение, что вы не сможете этого сделать, пока не напишете консольное приложение.

Если это действительно не работает, попробуйте использовать метод Console.SetOut() для перенаправления строк Console.WriteLine() в StreamWriter, который может быть файлом на вашей машине. Не идеальное, но возможно работоспособное решение?

.
5
ответ дан 2 December 2019 в 05:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: