Einzelnen Beitrag anzeigen

matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#1

Delphi DLL und Aufruf in Excel VBA

  Alt 9. Jan 2018, 15:45
Hallo zusammen,

ich habe mich nun schon dusselig gelesen wegen einer kleinen DLL

Ziel der Übung, ich möchte eine DLL in VBA aufrufen und einen Wert übergeben (Procedure)

Der Wert soll dann als QRCode gewandelt werden und mittels Clipboard wieder ins Excel rein. Den Quelltext zum Clipboard transfer hab ich noch nicht getestet, soweit kommts gar nicht weil ich den Text nicht sauber in die DLL bekomme.

Mein Code dazu in Excel
Code:
Declare Sub QRtoClipboard Lib "C:\_Programmausgabe\Exceltest\QRgenerator.dll" (ByVal value As String)

Sub Schaltfläche1_Klicken()
Dim a As String
a = "Test123"
QRtoClipboard (a)
ActiveSheet.Cells("A20").Select
ActiveSheet.Paste

End Sub
Meine DLL
Delphi-Quellcode:
library QRgenerator;

uses
  Windows,

  System.SysUtils,
  uZintBarcode,
  VCL.Graphics,
  VCL.Clipbrd,
  System.Classes,
  VCL.Dialogs;
{$R *.res}

procedure QRtoClipboard(value:PWidechar);stdcall;
var mycode:TZintbarcodeComponent;
    mybmp:TBitmap;
    MyFormat : Word;
    AData : THandle;
    APalette : HPALETTE;
    a:String;
begin;
try
a:=String(value);
if a<>'then begin;
  mycode:=TZintBarcodeComponent.Create(nil);
  mybmp:=TBitmap.Create;
  mycode.Barcode.BarcodeType:=tBARCODE_QRCODE;
  mycode.Barcode.Data:=a;
  mycode.Barcode.Scale:=2;
  mycode.Barcode.GetBarcode(mybmp);
  Clipboard.Assign(mybmp);
(*
mybmp.SaveToClipBoardFormat(
      MyFormat,
      AData,
      APalette);
    ClipBoard.SetAsHandle(MyFormat,AData);
  *)

  mycode.Free;
  mybmp.Free;
  end;
except
  Showmessage('DLL Fehler: übergebener Wert "'+a+'"');
end;
end;


exports
 QRtoClipboard;

begin

end.
Die DLL wird auch aufgerufen, ich bekomm aber nur Chinesische Schriftzeichen. Wie muss ich in VBA und Delphi die Variable value deklarieren damit ich da den Text sauber übernehmen kann.

Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat