использовать DLL в ворде
В чём проблема? Делаешь DLLку COM сервером, регистрируешь его, потом в редакторе VBA делаешь Tools->References..., там находишь свою DLL и в проект добавляется ссылка. Можно поднимать твой COM объект, вызывать его методы.
Можно без COM серверов? ДЛЛка должна быть самая обычная, которую надо будет скопировать в нужное место на компе заказчика и чтобы работало.
А вот низзя вроде. Голову на отсечение не дам, конечно, но вроде нельзя. А чем COM не угодил? Сложно запустить regsvr32 <mycoolstuff.dll> из ком. строки?
если в дельфях сделать обычную дллку, ее можно будет из ворда использовать, или надо ее как-то COMовской сделать?
В Delphi вроде легко делать inproc COM серверы. Мне так помнится, что там даже wizard был для этого (в Delphi 7).
надо будет COM-сервер по-любому делать...
Парадокс как раз в том, что тут особенно ничего рюхать и не надо.
В Delphi несовпадающие типы строк с микрософтовскими, ты это учти, если что.
С какими? Там юзают везде basic strings. В Dephi наверно для этого должен быть отдельный тип.
Может проще будет из VBA в VB6 перенести. Последний умеет dll делать.
А вообще я вот статейку нашел для вопрошающего.
COM-сервер делать необязательно. Зависит от того, какая функциональность тебе нужна.
Кстати, если нет проблем с тем, что Office должен быть 2003, а основная причина почему нужно уйти от макросов на VBA это то, что код распространяется внутри документа. Тогда можно рекомендовать Visual Tool for Office. Там можно будет на VB.NET легко перенести.
Но нашел вот что (в обсуждении этой статьи на другом сайте)
Цитата из документацииДинамически выделять память?
A common error when working with PChars is to store in a data structure, or return as a value, a local variable. When your routine ends, the PChar will disappear because it is simply a pointer to memory, and is not a reference counted copy of the string. For example:
function title(n: Integer): PChar;
var
s: string;
begin
s := Format("title - %d", [n]);
Result := PChar(s); // DON"T DO THIS
end;
This example returns a pointer to string data that is freed when the title function returns.
Кто ее освобождать будет тогда?
Оставить комментарий
Eugenia_2005
есть некоторое расширение функциональности ворда, дополнительная панелька, умеющая делать некоторые вещи. Реализована она на VB в макросах.Надо всю эту функциональность реализовать в длл.
Как из ворда использовать дллку?