2013-09-12 3 views
2

Я ищу способ, чтобы написать код из VB.NET надстройки в проект VBAНаписать код в VBA IDE с .NET

Так говорят записи «MsgBox (» Привет, мир! «)» в .bas-модуль как часть проекта Excel из .NET, поэтому код, написанный на .NET, будет некоторым предварительно записанным VBA, который хранится в виде строки и вводится в проект VBA.

У меня есть старый код, который я использую для выполнения такого рода вещи в VBA, используя свойства VBE, чтобы создать командную строку для VBA IDE, а также написать код в другие модули или создать новые модули, но я хотел бы иметь возможность сделать это из того, что я сказал в предмет из VB.NET [желательно из созданной надстройки, которая будет отображаться в Excel R ibbon] или, может быть, из автономного приложения winform, которое можно свести к минимуму в лоток.

две вещей, которые я хочу сделать это является для:

  1. Для мониторинга производительности коды VBA, то унаследованный код я упоминаю в основном вставляет вызов к другим подразделам в начале и в конце каждой процедуры в проекте и записывает в .csv, чтобы вы знали, сколько времени выполнялось для каждой подфункции и функции.
  2. Чтобы разбить проект VBA на составные части, чтобы их можно было добавить в TFS, в основном, перебирают все компоненты проекта VBA и экспортировать их в папку, чтобы их можно было добавить в TFS, что позволило улучшить отслеживание изменений исходного кода

Может кто-нибудь указать мне на примеры [если есть] написания кода на модуль VBA с vb.net или дать указания о том, как это может быть достигнуто.

Я использую рамки 4.5 .NET и Visual Studio 2012 с VB, но я хорошо с C# примеров, а также

Большое спасибо.

+1

Извините, я неправильно понял ваш вопрос (комментарий удален). Я думал, что вы имели в виду своего рода VB.NET-VBA. Не уверен в отношении VBE, но в отношении VBA (что говорит первая строка вашего вопроса) вы можете общаться с Excel в различных формах непосредственно из VB.NET (как сказано, Office Interop VB.NET - это своего рода реплики VBA) и, следовательно, не нужно получать доступ к VBA (хотя это возможно, его надежность не слишком ясна для меня). Можете ли вы дать конкретную ситуацию, о которой вы хотели бы обратиться? Возможно, есть еще одна альтернатива. – varocarbas

+0

Да, что я сделаю, добавьте мои конкретные примеры, что я пытаюсь достичь, спасибо – spences10

+1

Как уже говорилось, вы можете запускать код VBA с VB.NET (здесь у вас есть ссылка с некоторыми подсказками: http: //stackoverflow.com/questions/4133094/run-vba-code-from-net-applications); хотя я всегда предпочитаю/рекомендую не смешивать платформы (VBA или VB.NET, взаимодействующие с Excel). Ваша вторая точка, похоже, поддерживает мое вышеупомянутое предположение: возможно, вы должны переместить все на VB.NET, поскольку TFS предназначен для VS (VB.NET), и нет реальной совместимости VB.NET-VBA, позволяющей использовать эту инфраструктуру. Возможно, у кого-то есть другая идея ... – varocarbas

ответ

2

Я предполагаю, что вы уже поняли это уже, но только в том случае:

Объекта дерево VBE экспонируют через автоматизацию - просто получить объект приложения для любого файла офиса вы имеете дело с помощью CreateObject вызова , то сделайте то же самое, что и в VBA (с соответствующими изменениями от VB6 до .net, очевидно).

exl = CreateObject("Excel.Sheet") 
exl.Application.Workbooks.Open("whatever.xlsx") 
'exl.Application.VBE.ActiveVBProject etc etc 
Смежные вопросы