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