|
Вопрос # 2 788/ вопрос открыт / |
|
К вопросу № 2786 извините, техника подводит
1 вопрс
----------------------------------------------------------------------------
Итак, пытаюсь автоматизировать Exel.
Текст библиотеки (старая, древняя немного переделанная)
----------------------------------------------------------------------------
unit GeoFunc01; в - архиве
interface
Uses
Windows, SysUtils, Math;
...
...
{------------------Оболочка для EXCEl----------------------------------}
procedure XLSRadToDDD_mmss(var DegFmt : Variant;
Rad : Variant; Decimals : Variant); Stdcall;
implementation
...
...
{------------------Оболочка для EXCEl----------------------------------}
procedure XLSRadToDDD_mmss(var DegFmt : Variant;
Rad : Variant; Decimals : Variant);
begin
DegFmt := RadToDDD_mmss(Rad, Decimals);
end;
end.
Делаю DLL
library GeoFuncXLS;
uses
SysUtils, Classes, GeoFunc01;
{$R *.res}
exports
XLSRadToDDD_mmss;
begin
end.
Пристегиваю к Excel
----------------------------------------------------------------------------
Option Explicit
Option Base 1
Declare Sub XLSRadToDDD_mmss Lib "E:\Velas\GEO_Func_EXCEL\Func_Dll\GeoFuncXLS.dll" (ByVal DegFmt As Variant, Rad As Variant, Decemal As Variant)
Function vbRadToDDD_mmss(Rad As Variant, Dec As Variant) As Variant
Dim Result As Variant
On Error Resume Next
Call XLSRadToDDD_mmss(Result, Rad, Dec) rem - виснем и перезапуск EXEL
vbRadToDDD_mmss = Result
End Function
-------------------------------------------------------------------------------
B function vbRadToDDD_mmss VBA, вызов процедуры из DLL
Call XLSRadToDDD_mmss(Result, Rad, Dec) вызывает неустранимую ошибку EXCEL, что
ведет к его перезагрузке. И Где Жук сидит???. Если знаете подскажите, где собака зарыта.
-------------------------------------------------------------------------------
2 вопрс
-------------------------------------------------------------------------------
Функкции VBE не разрешают манипулировать ячейками. Макросы не подходят, необходима именно
function - нужен автоматический пересчет значения ячейки или диапазона
Задача - я вызываю пользовательскую функцию VBE, описанную как:
Function MyFn(aData as Range, aResult As Range) as Variant
rem aData - диапазон исходных данных
rem aResult - диапазон ячеек куда необходимо поместить результат вычислений
Call DelphiDLL_procedure_or_fnction(aData as Range, aResult As Range)
'- можно ли здесь манипулировать ячейками
'- небходимо только присваевать значения
end function
-------------------------------------------------------------------------------
Заранее большое спасибо.
с уважением Александр.
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
 |
Вопрос задал: Крокодил (статус: Посетитель)
Вопрос отправлен: 15 мая 2009, 15:14
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|