Как создать исполняемое приложение для процедуры макроса Excel? - PullRequest
3 голосов
/ 02 февраля 2010

У меня есть две таблицы («Старая» и «Новая») и макрос VB Script. Макрос выполняется в одной («Новая»), сравнивает содержимое другой («Старая»), а затем выводит результаты обратно в электронную таблицу «Новая».

Я хотел бы создать исполняемый файл, в котором я ввожу два имени файла и нажимаю кнопку запуска, чтобы упростить эту процедуру. Текущая процедура требует открытия обоих файлов, затем вырезания и вставки скрипта в VB-редактор «New» и запуска его там. Я ищу совет относительно того, какой язык программирования или инструменты я могу использовать для создания этого приложения в Windows XP для работы с электронными таблицами, созданными в Excel 2007.

Могу ли я использовать C # для написания простого приложения, которое может это сделать?

Если бы вы могли указать мне на ресурсы о написании приложений на C # для взаимодействия с Excel, это было бы очень полезно.

Это моя первая попытка написать приложение, которое взаимодействует с Excel. Может быть, это невозможно. Если это так, пожалуйста, дайте мне знать это тоже.

Ответы [ 4 ]

1 голос
/ 03 февраля 2010

Почему бы просто не создать файл Excel с именем «Compare.Xls», который будет использовать следующий код, чтобы позволить пользователю выбрать файлы и запустить сравнение для них

Dim fd As FileDialog
Dim sOldFile As String
Dim sNewFile As String

Set fd = Application.FileDialog(msoFileDialogOpen)

  fd.AllowMultiSelect = False

  MsgBox "Please Select the Old File"
  fd.Show
  Workbooks.Open fd.SelectedItems(1)
  sOldFile = ActiveWorkbook.Name

  MsgBox "Please Select the New File"
  fd.Show
  Workbooks.Open fd.SelectedItems(1)
  sNewFile = ActiveWorkbook.Name

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

РЕДАКТИРОВАТЬ: я только что подумал об этом, вы можете добавить вызов к вашему макросу в ThisWorkbook под Workbook_Open и запускать его автоматически, когда кто-то открывает Compare.Xls.

0 голосов
/ 03 февраля 2010

Возможно, вы могли бы написать «Новый» как шаблон Excel, который при создании экземпляра запускает макрос, который открывает «Старый», сравнивает и сохраняет в новый документ.

Вы также можете рассмотреть вопрос об использовании Old в качестве шаблона или написании нового шаблона «compare.xlt», как предлагается в другом ответе.

0 голосов
/ 03 февраля 2010

Я определил макрос в Open office org, где я использовал командный файл для выполнения макроса из командной строки. И пакетный файл был выполнен с использованием C #. используйте ProcessStartInfo и Process Class. Вы можете знать Вы можете запустить командный файл в скрытом режиме, а также получить результат обратно (если есть) из потока вывода.

0 голосов
/ 02 февраля 2010

Возможно.

Вот несколько хороших уроков по этому вопросу:

  1. http://www.eggheadcafe.com/articles/create_macro_at_runtime_in_dotnet.asp
  2. http://support.microsoft.com/kb/306683
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...