Там какой-либо путь состоит в том, чтобы распечатать сообщение к консоли от Excel vba макрос? У меня есть маленькое консольное приложение.NET VB, которое называет макрос Excel, и я хотел бы, чтобы сообщения об ошибках из макро-кода распечатали к консоли. Debug.print не помогает, поскольку он только печатает к непосредственному окну. Какие-либо идеи?
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 прочитал это и использовал его, чтобы определить, была ли ошибка, а затем записал ее на консоль, если она была. Вроде как чип, но он сработал. Спасибо за все предложения!
Пройдите его путь к файлу и напишите все ошибки в файл.
Вы можете создать COM-компонент в вашем приложении VB.Net, которое вы можете позвонить от VBA и записывать на Консоль вашей приложения.
Почему бы вам не вернуть строку, содержащую сообщения об ошибках из макроса, в .Net код, и пусть .Net код напишет ее на консоль?
Или, если это действительно ошибки, поднимите ошибки из макроса с помощью Err.Raise
и обработайте их в .Net-коде с помощью блока Попробуйте Catch
, который записывает детали в консоль.
Вы можете попробовать использовать Debug.WriteLine()
для вывода отладочной информации в окно вывода Visual Studio Output, но у меня такое ощущение, что вы не сможете этого сделать, пока не напишете консольное приложение.
Если это действительно не работает, попробуйте использовать метод Console.SetOut()
для перенаправления строк Console.WriteLine()
в StreamWriter, который может быть файлом на вашей машине. Не идеальное, но возможно работоспособное решение?