none
Как вызвать процедуру из fortran dll в VBA Excel(Word) RRS feed

  • Вопрос

  • Объявляю процедуру в dll следующим образом:

    Private Declare Sub PYTHAGOR Lib "D:\pf.dll" (x As Integer, y As Integer , y As Integer)
     

    Далее в кнопку на форму пишу код:

     

    Dim a, b, c As Integer
    a = 1 
    b = 2
    Call PYTHAGOR(a, b, c)
    TextBox1.Text = CStr(c)


    При запуске скрипта на Call PYTHAGOR(a, b, c) выдается ошибка: "Run-time error '49' Bad DLL calling convertion"

     

    Подскажите, как правильно вызывать стороннюю dll в Microsoft Office?

    2 апреля 2013 г. 14:04

Ответы

Все ответы

  • Привет,

    По ошибке предоставьте полностью код, чтобы можно было проанализировать. Так лишь могу подсказать, что нужно использовать __stdcall в __declspec( dllexport ).

    Можете и тут посмотреть: "Calling Conventions" Default vs "CVF (/iface:cvf)"

    Что касается как правильно, есть такой блог:

    Fortran DLL and Excel – How to mesh them together

    3 апреля 2013 г. 7:16
    Модератор
  • После прочтения и создания dll по примеру из данного блога, код ошибки изменилась:

    Microsoft Visual Basic

    Run-time error '453':

    Can`t find DLL entry point PYTHAGOR in D:\fortran_dll.dll

    Что значит по ошибке предоставить полностью код? кроме этого сообщения VBA ничего другого не пишет про данную ошибку.

    К сожалению скриншот пока не могу прикрепить, т.к. моя учетная запись пока не прошла проверку, непонятно на что проверку... на правильность написания слов, на правильность осознания реальности существования...

    3 апреля 2013 г. 8:44
  • К сожалению скриншот пока не могу прикрепить, т.к. моя учетная запись пока не прошла проверку, непонятно на что проверку... на правильность написания слов, на правильность осознания реальности существования...
    На желание выложить скриншот по теме, а не для рекламы. Может пока выложите на бесплатный хостинг и дадите ссылку на скрин.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    3 апреля 2013 г. 9:07
    Отвечающий
  • После прочтения и создания dll по примеру из данного блога, код ошибки изменилась:

    Microsoft Visual Basic

    Run-time error '453':

    Can`t find DLL entry point PYTHAGOR in D:\fortran_dll.dll

    Что значит по ошибке предоставить полностью код? кроме этого сообщения VBA ничего другого не пишет про данную ошибку.

    К сожалению скриншот пока не могу прикрепить, т.к. моя учетная запись пока не прошла проверку, непонятно на что проверку... на правильность написания слов, на правильность осознания реальности существования...


    В таком случае читайте здесь: Why do I get a "Cannot Find entry point", должно решить проблему с чтением dll.
    3 апреля 2013 г. 13:43
    Модератор
  • DEF файл(описания экспортируемых функций из dll) на fortran я написал, а вот насчет того чтобы потом его подсоединить к VBA это оказалось затруднительно.

    VBA пишет ошибку Can`t add a reference to the specified file.

    4 апреля 2013 г. 7:10
  • DEF файл(описания экспортируемых функций из dll) на fortran я написал, а вот насчет того чтобы потом его подсоединить к VBA это оказалось затруднительно.

    VBA пишет ошибку Can`t add a reference to the specified file.

    Ясно, тогда давайте начнем сначала: Как создать библиотеку DLL, FORTRAN и вызывать ее из Visual Basic.

    4 апреля 2013 г. 8:28
    Модератор
  • C Visual Basic всё ясно и всё работает. Я имею в виду как подключить fortran dll к VBA которая в Microsoft Word и Excel и Access и т.д....
    4 апреля 2013 г. 10:48
  • Хорошо, но в другой теме Вам уже ответили: http://social.msdn.microsoft.com/Forums/en-US/isvvba/thread/c7e392e7-6f50-453d-883b-2e7b5a0bce73, эта библиотека не является COM/ActiveX. Придется другим образом как-то сделать все, смотрите здесь:

    [RESOLVED] Can't add a reference to the specified file

    4 апреля 2013 г. 11:00
    Модератор