Откройте файл SAS Enterprise Guide 7.1 egp с помощью Excel VBA

Кто-нибудь знает, как я могу открыть файл egp SAS EG 7.1 с помощью Excel VBA? Любая помощь приветствуется.


person Jayesh Surendran Menon    schedule 28.01.2019    source источник


Ответы (2)


Гораздо проще иметь дело с C#. Я должен не согласиться с Джо здесь, но я не думаю, что какая-либо часть VBA является .NET: это старый код COM.

Позвольте мне рассказать, как обращаться:

  1. Переименуйте файл EGP в расширение .zip. Это позволит вам взглянуть на него, чтобы понять структуру.
  2. Используйте .NET Core (последняя версия 2.2) и Visual Studio Code (бесплатно). Core позволит вам запускать его в любой системе и является направлением MS.
  3. Посмотрите, как читать zip-файл с помощью С#. Вот некоторый код, чтобы вы начали:
       private XDocument ReadZipFile(string testFile, bool writeFile)
        {
            var xd = new XDocument();
            using (FileStream zipToOpen = new FileStream(testFile, FileMode.Open))
            {
                using (var archive = new ZipArchive(zipToOpen, ZipArchiveMode.Read))
                {
                    var entry = archive.Entries.First(x => x.Name.ToLower() == "project.xml");
                    using (var sr = new StreamReader(entry.Open(), Encoding.UTF8))
                    {
                        var xmlFile = sr.ReadToEnd();
                        if (writeFile)
                        {
                            using (var sw =
                                new StreamWriter(@"X:\Data\projects\Savian.SasWorkflowReader\Data\project.xml"))
                            {
                                sw.Write(xmlFile);
                            }
                        }
                        xd = XDocument.Parse(xmlFile);
                    }
                }
            }
            return xd;
        }
  1. Проанализируйте его, как только он будет в текстовом формате, используя RegEx.
person AlanC    schedule 28.01.2019
comment
VBA использует синтаксическую структуру, аналогичную VB.Net, хотя вы правы в том, что за кулисами это на самом деле не .Net (это VB6). Я не имел в виду, что на самом деле это был .Net за кулисами, я перепишу это. - person Joe; 28.01.2019
comment
Тем не менее, я не думаю, что OP хочет на самом деле анализировать файл, я думаю, что OP хочет открыть EGP в режиме реального времени (поэтому вводит команды для Windows, аналогичные тому, как .vbs это используется при планировании.) @OP, поясните, пожалуйста, если это не так. - person Joe; 28.01.2019
comment
VBA имеет только внешнее сходство с VB.NET, но я понимаю, о чем вы говорите. В мире .NET доминирующим языком является C#. Использование VB из-за комфорта - плохая идея IMO. Сложнее найти примеры кода и помощь. Перейдите на C# для этого, если вы собираетесь погрузиться. Если цель состоит в том, чтобы выдавать команды, подобные EG, это более чем выполнимо. Много примеров того, как это сделать, но опять же, большинство примеров на C#. Надстройка EG может сделать это, если это является целью. - person AlanC; 29.01.2019

Для Enterprise Guide можно использовать скрипты с использованием .Net, что хорошо, поскольку VBA также по большей части использует синтаксис, аналогичный .Net, хотя на самом деле это не .Net. Вам может быть проще использовать VB.Net или Powershell, чем VBA, но принцип должен быть примерно таким же, если вы знаете, как вызывать .Net из Excel/VBA (см. этот вопрос/ответ для начала). (Я настоятельно рекомендую Powershell, так как он прост в освоении и очень подходит для такого рода вещей.)

Вы можете быстро начать работу с руководства Криса Хемедингера, хоть это и довольно старо (думаю, это 4.3), но понятия и названия должны быть, по крайней мере (в основном), теми же.

Вы также можете запланировать задачу внутри Enterprise Guide, используя планировщик Windows (Файл-> Расписание [projname]). Что он делает, когда вы говорите ему сделать это, так это создает файл .VBS (базовый визуальный скрипт), который затем вы можете открыть, чтобы увидеть, как он работает, и каннибализировать код для ваших собственных целей.

person Joe    schedule 28.01.2019