Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Visio + Delphi запуск макроса 
:(
    Опции темы
MPavel
Дата 8.6.2013, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 3.2.2013

Репутация: нет
Всего: нет



Доброго времени суток!

Столкнулся с проблемой, выполнения макроса в Visio из Delphi. Вообще по данной связке информации в интернете очень мало. Единственное что нашел, у Visio нет метода запуска макросов, в отличии от того же Word и Excel.

Наткнулся так же на пример кода запуска макроса, но написанного на C#

Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Visio = Microsoft.Office.Interop.Visio;
using Excel = Microsoft.Office.Interop.Excel;
namespace RunMacroInViso
{
  class Program
  {
    static void Main(string[] args)
    {
      string fileDir = Environment.CurrentDirectory;
      if (fileDir.EndsWith("\\bin\\Debug"))
      {
        fileDir = fileDir.Replace("bin\\Debug", "");
      }
      //string fileName = "TestMacro.xlsm";
      //Excel.Application excelApp = new Excel.Application();
      //excelApp.Visible = true;
      // Excel.Workbook wb = excelApp.Workbooks.Open(fileDir + fileName);
      
      //RunMacro(excelApp, new object[] { "Test" });
      string fileName = "TestMacro.vsd";
      Visio.Application visioApp = new Visio.Application();
      visioApp.Visible = true;
      Visio.Document doc = visioApp.Documents.Open(fileDir + fileName);
 
      RunMacro(visioApp, new Object[] { "Test" });
    }

    private static void RunMacro(object oApp, object[] oRunArgs)
    {
      oApp.GetType().InvokeMember("Run",
        System.Reflection.BindingFlags.Default |
        System.Reflection.BindingFlags.InvokeMethod,
        null, oApp, oRunArgs);
    }

  }



к сожалению перевести непосредственно процедуру RunMacro на Delphi что бы оно заработало, так и не смог. 

Может кто то сталкивался с подобной задачей и есть какие то решения?
PM MAIL   Вверх
gesper
Дата 17.6.2013, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


"Shарфик"
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 23.2.2005

Репутация: нет
Всего: 2



Alt+F11 Открываем VBA. там либо экспериментируем с кодом, либо сразу смотрим окно испектора вызываемого через F2 и находим нужные функции. Команда практически 1 к 1 пишутся на делфе.

Это сообщение отредактировал(а) gesper - 17.6.2013, 21:26
--------------------
...И приколется обломившийся и oбломится приколовшийся...
PM MAIL   Вверх
MPavel
Дата 20.6.2013, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 3.2.2013

Репутация: нет
Всего: нет



Решение найдено, правда не совсем то что хотелось бы, но по крайней мере сейчас получается запустить макрос находящийся в файле Visio из Delphi.

Но вопрос остается открытым как вызвать макрос и передать какаие либо данные в макрос.

Код

var
  MsVisio: Variant;

...

procedure ...
begin
  MsVisio := CreateOleObject('Visio.Application');  
  MsVisio.Visible := True;
  MsVisio.Application.Documents.Open(Edit1.Text);
  MsVisio.ActiveDocument.ExecuteLine ('Macro1'); // собственно запуск макроса

...
end;


Возможно кому то будет полезно, 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0624 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.