Re[4]: вызвать net форму из vba
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 05.12.21 16:14
Оценка: 6 (1) +1
Здравствуйте, Hermitap, Вы писали:

H>и получаю ошибку Object rfequired

Логично, вы объявили переменную, но не создали экземпляр объекта.

Попробуйте заменить первую строку на:
 Dim ctest2 As New ClassLibrary2.Class1
Re: вызвать net форму из vba
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 04.12.21 20:46
Оценка: 6 (1)
Здравствуйте, Hermitap, Вы писали:
H>Да и хотелось бы vba использовать по минимуму. Все написано уже на C#
https://ru.stackoverflow.com/questions/527763/%D0%9A%D0%B0%D0%BA-%D0%B2%D1%8B%D0%B7%D0%B2%D0%B0%D1%82%D1%8C-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D0%B8%D0%B7-c-%D0%B2-1%D0%A1/527802#527802
и солнце б утром не вставало, когда бы не было меня
Re: вызвать net форму из vba
От: vaa  
Дата: 05.12.21 04:28
Оценка: 6 (1)
Здравствуйте, Hermitap, Вы писали:


H>Да можно это сделать например как запуск exe c параметром. А по завершению записать в файл и считать например результат из файла средствами vba.

H>Но это как-то не серьезно.

Почему? в linux например pid-файлы используются. еще часто через pipeline данные передаются в другую программу.

H>Хотелось бы по человечески взять вызвать dll. Запустить методы передать получить параметры.


повесить на сборку аттрибут ComVisible
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[8]: вызвать net форму из vba
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 07.12.21 06:15
Оценка: 6 (1)
Здравствуйте, Hermitap, Вы писали:

H>Если по excel есть доки то по проджекту пока данных мало. Займет время.

H>Пока времени мало разобраться. Но очень инетересно. Буду использовать.
H>А так спасибо за хорошую наводку. Буду разбираться дальше
Увы, да — на сколько я помню нормальных примеров в документации (такого же уровня как по Word или Excel) я по-моему так и не нашел.
Смотрел на найденные примеры в Internet + на документацию по API.

На сколько мне помнится (дело было почти 10 лет назад) всё хранится как набор таблиц и всё API это обращение к этим таблицам (ну и плюс общеофисное, типа работы с Ribbon и показа окошек). А дальше уже нужно разбираться как именно и что хранится в таблицах.
Причем, вроде даже основная таблица всего одна — это сами элементы работ. В ней просто куча стандартных полей + можно добавлять свои.
Но (!), возможно, это просто я не нашел другого способа, а так (беглым взглядом), вроде основные понятия типа Task, Calendar, Resource есть и в нормальной модели.
Re: вызвать net форму из vba
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 05.12.21 10:11
Оценка: +1
Здравствуйте, Hermitap, Вы писали:

H>Куда смотреть где почитать пример хоть какой то?

Один из вариантов вам предложили чуть выше — сделать на базе вашего кода обычный COM-компонент, с поддержкой IDispatch (в .Net это не так и сложно) и использовать его.

Другой вариант, более специфичный для Office — это сделать не "просто COM", а VSTO-плагин.
На сколько я помню, программная модель (ну за исключением специфических API) у всех офисных приложений более-менее одинаково.
Поэтому, в качестве отправной точки можно посмотреть:
— вот эту статью Call code in VSTO Add-ins from other Office solutions
— и соответствующий ей пример

Т.е. идя в том, что вы:
— делаете на базе своего C# кода VSTO-плагин для офиса,
— в плагине экспортируете интерфейс + реализацию, через которые VBA будет вызывать ваш код и получать результат
— затем этот плагин вручную (или иным способом, за подробностями можно обратиться к Deploy an Office solution) ставится на машины пользователей
— всё, можно обращаться из VBA к C#/VB.Net коду

Почему мне кажется, этот вариант лучше чем "просто COM"
— готовые ("из коробки") решения для дерлоя
— вам доступен API самого Office. Тут только проверьте, на сколько реально объекты Office можно передавать при вызове VBA->VSTO, не уверен, что тут всё идеально. Но, например, вполне должно сработать что-то типа: вы вызываете из VBA некий код своего плагина, а он уже сам лезет в таблицы Project, достает что надо, показывает и даже меняет данные
— если вам всё же придется поддерживать это решение далее, вы сможете потихоньку перетаскивать код из VBA в VSTO. Конечно, MS намекает что обе технологии Obsolete, но их скриптовый API всё еще в подметки не годится тому, что можно сделать в VBA/VSTO (ну разве что он кроссплатформенный вплоть до браузера), а для MS Project его и вообще по-моему нет...

К сожалению, по разработке плагинов для MS Project информации очень мало.
Есть вот буквально такой раздел и в нем ссылка на API.

Но могу сказать, что если вы разобрались с этой моделью в VBA, проблем далее быть особо не должно. По крайней мере по своему опыту могу сказать, что с абсолютного 0 небольшой плагин для выгрузки нужных отчетов из MS Project я написал за пару дней и больше всего ушло времени именно на осмысление того, как устроено хранение в таблицах Project.
вызвать net форму из vba
От: Hermitap Украина  
Дата: 04.12.21 19:24
Оценка:
Доброго.

Задача. Есть например ms project 2016.
Нужно из vba вызвать dll net форму(net framework 4x) передать ей параметры. Поработать в форме(мини приложение).
получить данные по нажатию ок.
Данные могут передаваться получаться таблицами.

Да можно это сделать например как запуск exe c параметром. А по завершению записать в файл и считать например результат из файла средствами vba.
Но это как-то не серьезно.
Хотелось бы по человечески взять вызвать dll. Запустить методы передать получить параметры.

Куда смотреть где почитать пример хоть какой то?

Спасибо.


p.s. Использовать редактор форм самого vba не катит.
Это довольно сложное приложение с гридами с деревьями и много чего другого что
написание на vba приведет к очень длительному кодингу.
Да и хотелось бы vba использовать по минимуму. Все написано уже на C#
Отредактировано 04.12.2021 19:46 Hermitap . Предыдущая версия . Еще …
Отредактировано 04.12.2021 19:26 Hermitap . Предыдущая версия .
Отредактировано 04.12.2021 19:24 Hermitap . Предыдущая версия .
Re[2]: вызвать net форму из vba
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.12.21 11:16
Оценка:
Здравствуйте, vaa, Вы писали:

vaa>повесить на сборку аттрибут ComVisible

Не все типы при этом будут ком совместимы. Проще всего использовать IReflect и через него делать обертки.
https://infostart.ru/public/238584/
и солнце б утром не вставало, когда бы не было меня
Re[3]: вызвать net форму из vba
От: Hermitap Украина  
Дата: 05.12.21 15:19
Оценка:
Доброго.

Спасибо всем за наводку куда смотреть. Изучаю тему.

я по этому гайду создал простенький пример. https://aakinshin.net/ru/posts/wrap-cs-in-com/
Зарегистрировал его
Вижу его в преференсах проджекта

но не понимаю как его вызвать из VBA.

Объявляю в vba так
 Dim ctest2 As ClassLibrary2.Class1
 Dim x As Integer
 Set x = ctest2.Sum(1, 2)

и получаю ошибку Object rfequired
на строчке x =
Подключено правильно. Метод sum подсвечивается в подсказке значит все подключил правильно.
Почему не работает?

если без set то ошибка 91 variable not set


Буду благодарен за совет.

Спасибо.
Отредактировано 05.12.2021 15:48 Hermitap . Предыдущая версия . Еще …
Отредактировано 05.12.2021 15:47 Hermitap . Предыдущая версия .
Отредактировано 05.12.2021 15:37 Hermitap . Предыдущая версия .
Отредактировано 05.12.2021 15:36 Hermitap . Предыдущая версия .
Отредактировано 05.12.2021 15:35 Hermitap . Предыдущая версия .
Отредактировано 05.12.2021 15:35 Hermitap . Предыдущая версия .
Re[5]: вызвать net форму из vba
От: Hermitap Украина  
Дата: 05.12.21 16:17
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

МР>Здравствуйте, Hermitap, Вы писали:


H>>и получаю ошибку Object rfequired

МР>Логично, вы объявили переменную, но не создали экземпляр объекта.

МР>Попробуйте заменить первую строку на:

МР>
МР> Dim ctest2 As New ClassLibrary2.Class1
МР>


Спасибо. Все заработало.
Тупая ошибка. Я никогда с vba до этого не сталкивался
Отредактировано 05.12.2021 16:18 Hermitap . Предыдущая версия . Еще …
Отредактировано 05.12.2021 16:17 Hermitap . Предыдущая версия .
Re[4]: вызвать net форму из vba
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.12.21 17:31
Оценка:
Здравствуйте, Hermitap, Вы писали:

Нужно ProgId прописат
    [ComVisible(true)]
    [ProgId("NetObjectToIDispatch45")]
    [ClassInterface(ClassInterfaceType.AutoDispatch)]
    [Guid("DFDADA57-B22C-4276-928A-8B91C9891FF1")]
    public class NetObjectToIDispatch45


Из 1С вызов такой
 врап=новый COMОбъект("NetObjectToIDispatch45");
и солнце б утром не вставало, когда бы не было меня
Re[5]: вызвать net форму из vba
От: Hermitap Украина  
Дата: 05.12.21 17:45
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Hermitap, Вы писали:


S>Нужно ProgId прописат

S>
S>    [ComVisible(true)]
S>    [ProgId("NetObjectToIDispatch45")]
S>    [ClassInterface(ClassInterfaceType.AutoDispatch)]
S>    [Guid("DFDADA57-B22C-4276-928A-8B91C9891FF1")]
S>    public class NetObjectToIDispatch45
S>


S> Из 1С вызов такой

S>
S> врап=новый COMОбъект("NetObjectToIDispatch45");
S>


Спасибо.
Я совершенно не связан с 1c. Мне нужно вызвать C# либу из VBA (MS Project)
С# либа подключается к SAP через SAP NET Connector и работает с данными SAP и обменивается данными sap=>project>sap.
Я знаю что vba можно подключить к SAP. Но мне не хотелось много форм рисовать на vba если есть все готовое уже на C#.

Почему мне прислали почти все ссылки на 1C я не понял. Вроде не говорил что я 1сник.
Все что нужно у меня получилось. (Благодаря ответам) Прикрутил форму к MS PROJECT и сделал нужную передачу данных.

Хотя пока не все понимаю как работает. Что такое ProgId зачем нужен и зачем вообще интерфейс делать.
вот из этого примера https://aakinshin.net/ru/posts/wrap-cs-in-com/
Зачем сделан был ICalculator? (риторический вопрос) С COM не работал.
Я знаю что такое интерфейсы. Но не понимаю зачем он нужен именно в данном случае. Вероятно требование com библиотеки

Всем Спасибо.
Re[4]: вызвать net форму из vba
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.12.21 18:03
Оценка:
Здравствуйте, Hermitap, Вы писали:

H>
H> Dim ctest2 As ClassLibrary2.Class1
H> Dim x As Integer
H> Set x = ctest2.Sum(1, 2)
H>

H> и получаю ошибку Object rfequired
H> на строчке x =
H> Подключено правильно. Метод sum подсвечивается в подсказке значит все подключил правильно.
H> Почему не работает?

H>если без set то ошибка 91 variable not set


Возможно в VBA 1 это не int а double. Проверь в отладчике
public int Sum(object a, object b)
    {
        return (int)a + (int)b;
    }
и солнце б утром не вставало, когда бы не было меня
Re[5]: вызвать net форму из vba
От: Hermitap Украина  
Дата: 05.12.21 18:06
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Возможно в VBA 1 это не int а double. Проверь в отладчике

S>
S>public int Sum(object a, object b)
S>    {
S>        return (int)a + (int)b;
S>    }
S>


Уже ответили я New пропустил
Dim ctest2 As New ClassLibrary2.Class1

Но все равно Спасибо.
Re[6]: вызвать net форму из vba
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.12.21 18:09
Оценка:
Здравствуйте, Hermitap, Вы писали:
H>Хотя пока не все понимаю как работает. Что такое ProgId зачем нужен и зачем вообще интерфейс делать.
ProgId нужен для позднего связывания. То есть ты тип знаешь заранее. Если не надо, то IDispath прекрасно подходит.
То есть ты можешь просто вызвать CreateObject(ProgId)
и солнце б утром не вставало, когда бы не было меня
Re[7]: вызвать net форму из vba
От: vaa  
Дата: 06.12.21 01:53
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>ProgId нужен для позднего связывания.

и обязательно
regsvr32 dotnet-com-library.dll
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[8]: вызвать net форму из vba
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 06.12.21 07:09
Оценка:
Здравствуйте, vaa, Вы писали:

vaa>Здравствуйте, Serginio1, Вы писали:


S>>ProgId нужен для позднего связывания.

vaa>и обязательно
vaa>
vaa>regsvr32 dotnet-com-library.dll
vaa>

Ну это для Core https://docs.microsoft.com/en-us/dotnet/core/native-interop/expose-components-to-com
Ну и без ProgId tlb то все равно нужно регистрировать
Для .Net Framework regasm.exe из 2 х каталогов

public string GetSysPath(string ИмяПеременной)
        {
            string path = System.Environment.GetEnvironmentVariable(ИмяПеременной);
            //  path = System.Environment.GetEnvironmentVariable("%" + ИмяПеременной + "%");
            if (!path.EndsWith("\\")) path += "\\";
            return path;
        }

  string Каталог20 = @"Microsoft.NET\Framework{0}\v2.0.50727\";
   string Каталог45=@"Microsoft.NET\Framework{0}\v4.0.30319\";

  var Приложение = GetSysPath("Windir");
            var Приложение32 = Приложение +string.Format(Каталог,"")+ "regasm.exe";
            var Приложение64 = Приложение + string.Format(Каталог,"64")+"regasm.exe";

           var КоманднаяСтрока = @"""" + filename + @""" " + @"/codebase";

                if (System.IO.File.Exists(Приложение32))
                {
                    ЗапуститьПриложение(Приложение32, КоманднаяСтрока);
                    textBox1.Text = Приложение32 + " " + КоманднаяСтрока;
                }
                if (System.IO.File.Exists(Приложение64))
                {
                    ЗапуститьПриложение(Приложение64, КоманднаяСтрока);
                    textBox2.Text = Приложение64 + " " + КоманднаяСтрока;
                }
и солнце б утром не вставало, когда бы не было меня
Отредактировано 06.12.2021 7:50 Serginio1 . Предыдущая версия .
Re[6]: вызвать net форму из vba
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 06.12.21 07:32
Оценка:
Здравствуйте, Hermitap, Вы писали:

H>Спасибо. Все заработало.

H>Тупая ошибка. Я никогда с vba до этого не сталкивался
Всегда пожалуйста.
Но я бы всё же порекомендовал подумать о полноценном VSTO-плагине. Да, там чуть больше работы и несколько больше нюансов, но, имхо — игра стоит свеч (при условии, конечно, что код в .Net имеет какую-то офисную специфику. Иначе да, смысла её туда тащить не много, и можно обойтись обычным COM)
Re[7]: вызвать net форму из vba
От: Hermitap Украина  
Дата: 06.12.21 07:45
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

МР>Здравствуйте, Hermitap, Вы писали:


H>>Спасибо. Все заработало.

H>>Тупая ошибка. Я никогда с vba до этого не сталкивался
МР>Всегда пожалуйста.
МР>Но я бы всё же порекомендовал подумать о полноценном VSTO-плагине. Да, там чуть больше работы и несколько больше нюансов, но, имхо — игра стоит свеч (при условии, конечно, что код в .Net имеет какую-то офисную специфику. Иначе да, смысла её туда тащить не много, и можно обойтись обычным COM)

Да спасибо. Я уже посмотрел что это и как это. Взял на заметку. Пока я прикрутил все что мне нужно.
Будут новые задачи. Обращу внимание. Выглядит интересно.
По крайней мере на неделе другой посмотрю в свободное время. Попытаюсь что-то сделать и посмотреть как работает.
Отредактировано 06.12.2021 7:48 Hermitap . Предыдущая версия .
Re[7]: вызвать net форму из vba
От: Hermitap Украина  
Дата: 06.12.21 17:33
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

МР>Здравствуйте, Hermitap, Вы писали:


H>>Спасибо. Все заработало.

H>>Тупая ошибка. Я никогда с vba до этого не сталкивался
МР>Всегда пожалуйста.
МР>Но я бы всё же порекомендовал подумать о полноценном VSTO-плагине. Да, там чуть больше работы и несколько больше нюансов, но, имхо — игра стоит свеч (при условии, конечно, что код в .Net имеет какую-то офисную специфику. Иначе да, смысла её туда тащить не много, и можно обойтись обычным COM)

Попробовал покрутить VSTO. Весч!!!
Почти все с ходу заработало.
Осталось разобраться с управлением прожектом с его api и научиться управлять примерно так же как из vba.
Если по excel есть доки то по проджекту пока данных мало. Займет время.
Пока времени мало разобраться. Но очень инетересно. Буду использовать.
А так спасибо за хорошую наводку. Буду разбираться дальше
Отредактировано 06.12.2021 18:22 Hermitap . Предыдущая версия . Еще …
Отредактировано 06.12.2021 18:19 Hermitap . Предыдущая версия .
Re[9]: вызвать net форму из vba
От: Hermitap Украина  
Дата: 08.12.21 12:18
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

МР>На сколько мне помнится (дело было почти 10 лет назад) всё хранится как набор таблиц и всё API это обращение к этим таблицам (ну и плюс общеофисное, типа работы с Ribbon и показа окошек). А дальше уже нужно разбираться как именно и что хранится в таблицах.

МР>Причем, вроде даже основная таблица всего одна — это сами элементы работ. В ней просто куча стандартных полей + можно добавлять свои.
МР>Но (!), возможно, это просто я не нашел другого способа, а так (беглым взглядом), вроде основные понятия типа Task, Calendar, Resource есть и в нормальной модели.

А не помните, столкнулся с таким маленьким неудобством. Через vba я могу сохранить проект в XML а через C# не могу. Нет формата XML в константе параметра метода Saveas.
Смириться или есть другой способ?
Re[10]: вызвать net форму из vba
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 08.12.21 13:12
Оценка:
Здравствуйте, Hermitap, Вы писали:


H>А не помните, столкнулся с таким маленьким неудобством. Через vba я могу сохранить проект в XML а через C# не могу. Нет формата XML в константе параметра метода Saveas.

Увы, такое я не делал.
У меня была задача сделать, по-сути, кастомный отчет на базе готового проекта (если не ошибаюсь — я из MS Project выгружал списки задач по ребятам из команды — что-то в этом роде).

H>Смириться или есть другой способ?

Я посмотрел описание метода SaveAs и даже для VBA, в списке форматов PjFileFormat XML нет.

В самом описании говорят, что, можно указывать не параметр Format, а FormatID, правда пишут, что

Several FormatID strings are obsolete; if you try to use them, they result in run-time error 1004.


Но как раз среди этих FormatID, есть формат "MSProject.xml" — Project XML file

Поэтому, я бы попробовал так:
— для начала разобраться, как указывается формат выгрузки в VBA. Если через параметр Format, то тупо попробовать в C# передать такое же значение константы
— если не проканает — попробовать Format не указывать, а указать в FormatId == "MSProject.xml"

А вообще может и не стоит завязываться на их XML. Я подозреваю он представляет собой дамп каких-то внутренних структур — работать с таки будет себе дороже (ну разве что вам это нужно чтобы скормить кому-то, кто этот формат понимает).
Re[11]: вызвать net форму из vba
От: Hermitap Украина  
Дата: 08.12.21 16:36
Оценка:
Здравствуйте, Михаил Романов, Вы писали:
МР>Я посмотрел описание метода SaveAs и даже для VBA, в списке форматов PjFileFormat XML нет.

МР>В самом описании говорят, что, можно указывать не параметр Format, а FormatID, правда пишут, что

МР>

Several FormatID strings are obsolete; if you try to use them, they result in run-time error 1004.


МР>Но как раз среди этих FormatID, есть формат "MSProject.xml" — Project XML file


Таки да.
такой метод сработал
app.Application.FileSaveAs("C:\\!\\dd.xml",FormatID: "MSProject.XML");


Мне зачем надо было. XML текстовый формат. А мне надо проект бы отдельно сохранить в базе данных построчно. (Не в project server)
И загнать текстовый файл в таблицу проще чем родной формат проджекта. XML удобен. Но если что будет не так я обычный файл проекта конвертировал бы в base64 и загнал бы его в таблицу Ну это так пока что тестирование возможностей. На возможные будущие интеграции.
Отредактировано 08.12.2021 16:53 Hermitap . Предыдущая версия . Еще …
Отредактировано 08.12.2021 16:36 Hermitap . Предыдущая версия .
Re[12]: вызвать net форму из vba
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 08.12.21 17:03
Оценка:
Здравствуйте, Hermitap, Вы писали:

H>Мне зачем надо было. XML текстовый формат. А мне надо проект бы отдельно сохранить в базе данных построчно. (Не в project server)

H>И загнать текстовый файл в таблицу проще чем родной формат проджекта. XML удобен. Но если что будет не так я обычный файл проекта конвертировал бы в base64 и загнал бы его в таблицу Ну это так пока что тестирование возможностей. На возможные будущие интеграции.

Честно говоря, в такой постановке выглядит немного странно. Сохранять файл в БД — я бы понял, если бы это была бы база какой-нибудь системы ECM/СЭД, но здесь, я так понимаю, что-то более специфическое...
Но ладно, я всё равно не готов погружаться в вашу задачу — вы в любом случае владеете контекстом на порядок лучше меня.

Единственный момент, который сразу же всплывает — а почему всё же не хранить бинарный файл целиком, используя предназначенные для этого binary типы полей?
Есть какие-то ограничения со стороны СУБД?

Ну и даже если с binary почему-то не катит, то вариант сконвертировать в base64 и сохранить файл так выглядит предпочтительнее, имхо, т.к. я почти на 100% уверен при сохранении в другие форматы через SaveAs наверняка что-то будет теряться.
Re[13]: вызвать net форму из vba
От: Hermitap Украина  
Дата: 08.12.21 17:09
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

МР>Здравствуйте, Hermitap, Вы писали:


МР>Единственный момент, который сразу же всплывает — а почему всё же не хранить бинарный файл целиком, используя предназначенные для этого binary типы полей?

МР>Есть какие-то ограничения со стороны СУБД?

почти. Это SAP и немного старенький. Последний апдейт был 15 лет назад. Там все сложно в общем.
Re[14]: вызвать net форму из vba
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 08.12.21 17:16
Оценка:
Здравствуйте, Hermitap, Вы писали:

H>почти. Это SAP и немного старенький. Последний апдейт был 15 лет назад. Там все сложно в общем.

Ясно.
Да, тогда, похоже, только крутиться...
Но я всё же за то, чтобы не делать лишних конвертаций файла. Почти наверняка и размер увеличится и что-то да потеряется.
Re[15]: вызвать net форму из vba
От: Hermitap Украина  
Дата: 08.12.21 17:49
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

МР>Здравствуйте, Hermitap, Вы писали:


H>>почти. Это SAP и немного старенький. Последний апдейт был 15 лет назад. Там все сложно в общем.

МР>Ясно.
МР>Да, тогда, похоже, только крутиться...
МР>Но я всё же за то, чтобы не делать лишних конвертаций файла. Почти наверняка и размер увеличится и что-то да потеряется.


я учту. Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.