Re: DLL aufruf aus Excel-Makro
Verfasst: 22.02.2014 14:12
fehlt da ein 'n'?Martin66119 hat geschrieben:die Fehlermeldung Datei nicht gefunden: D:\PB\ExcelDll\MyFuction.dll
Grüße ... Kiffi
fehlt da ein 'n'?Martin66119 hat geschrieben:die Fehlermeldung Datei nicht gefunden: D:\PB\ExcelDll\MyFuction.dll
Code: Alles auswählen
Private Declare PtrSafe Sub MyFunction Lib "D:\ExcelDLL\MyFunction.dll" ()
Sub ExcelDLL_MyFunction()
Call MyFunction
End Sub
Code: Alles auswählen
Private Declare Sub MyFunction Lib "D:\ExcelDLL\MyFunction.dll" ()
Sub ExcelDLL_MyFunction()
Call MyFunction
End Sub
Code: Alles auswählen
Private Declare Sub MyFunction Lib "D:\ExcelDLL\MyFunction.dll" ()
Sub ExcelDLL_MyFunction()
Call MyFunction
End Sub
Code: Alles auswählen
ProcedureDLL MyFunction()
MessageRequester("Hallo", "Dies ist eine PureBasic DLL !", 0)
Input$ = InputRequester("Titel", "Bitte machen Sie Ihre Eingabe:", "Ich bin die Standardeingabe.")
If Input$ > ""
a$ = "Sie haben folgendes in den Requester geschrieben:" + Chr(10) ; Chr(10) wird nur für
a$ + Input$ ; den Zeilenumbruch benötigt
Else
a$ = "Der Requester wurde abgebrochen oder es wurde nichts eingegeben."
EndIf
MessageRequester("Information", a$, 0)
EndProcedure
Code: Alles auswählen
; Excel Makro
Private Declare Sub MyFunction Lib "D:\PB\ExcelDLL\ExcelDLL_MyFunction.dll" ()
Sub ExcelDLL_MyFunction()
Call MyFunction
End Sub
Code: Alles auswählen
; PB Code für dll; Name der dll; ExcelDll_MyFunction
ProcedureDLL MyFunction()
MessageRequester("Hallo", "Dies ist eine PureBasic DLL !", 0)
Input$ = InputRequester("Titel", "Bitte machen Sie Ihre Eingabe:", "Ich bin die Standardeingabe.")
If Input$ > ""
a$ = "Sie haben folgendes in den Requester geschrieben:" + Chr(10) ; Chr(10) wird nur für
a$ + Input$ ; den Zeilenumbruch benötigt
Else
a$ = "Der Requester wurde abgebrochen oder es wurde nichts eingegeben."
EndIf
MessageRequester("Information", a$, 0)
EndProcedure
Code: Alles auswählen
Private Declare Sub MyFunction Lib "E:\PB\ExcelDLL\ExcelDLL_MyFunction.dll" ()
Sub ExcelDLL_MyFunction()
Call MyFunction
End Sub
Code: Alles auswählen
ProcedureDLL MyFunction()
NewList Datei1.s()
NewList Datei1_1.s()
NewMap Datei2.s()
If OpenWindow(0, 0, 0, 1200, 650, "PureBasic Window", #PB_Window_Maximize | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
If CreateMenu(0, WindowID(0)) ; hier beginnt das Erstellen des Menüs...
MenuTitle("Project")
MenuItem(1, "Open")
MenuBar() ; hier wird der Abgrenzungsbalken eingefügt
MenuItem(4, "Close")
EndIf
StandardFile$ = "*\" ; anfänglichen Pfad + Dateiname festlegen
Pattern$ = "Text (*.txt)|*.txt;*.csv|Text (*.csv)|*.pb|Alle Dateien (*.*)|*.*"
Pattern = 0 ; wir verwenden den ersten von drei möglichen Pattern als Standard
Filename1$ = OpenFileRequester("Bitte erste Datei zum Vergleich auswählen", StandardFile$, Pattern$, Pattern)
ReadFile(1,FileName1$)
While Eof(1)=0
Zeile.s=ReadString(1)
AddElement(Datei1())
Datei1() = Zeile.s
Wend
CloseFile(1)
StandardFile$ = "*\" ; anfänglichen Pfad + Dateiname festlegen
Pattern$ = "Text (*.txt)|*.txt;*.csv|Text (*.csv)|*.pb|Alle Dateien (*.*)|*.*"
Pattern = 0 ; wir verwenden den ersten von drei möglichen Pattern als Standard
Filename2$ = OpenFileRequester("Bitte zweite Datei zum Vergleich auswählen", StandardFile$, Pattern$, Pattern)
ReadFile(1,FileName2$)
While Eof(1)=0
Zeile.s=ReadString(1)
AddMapElement(Datei2(),Zeile)
Datei2() = Zeile.s
Wend
CloseFile(1)
ResetList(Datei1())
ResetMap(Datei2())
StartTime = ElapsedMilliseconds()
While NextElement(Datei1())
Ergebnis = FindMapElement(Datei2(),Datei1())
If Ergebnis = 0
AddElement(Datei1_1())
Datei1_1() = Datei1()
Else
DeleteMapElement(Datei2(), Datei1())
EndIf
Wend
Time =ElapsedMilliseconds() - StartTime
ResetList(Datei1_1())
ResetMap(Datei2())
If CreateFile(0, "Text1.csv")
While NextElement(Datei1_1())
WriteStringN(0, Datei1_1())
Wend
CloseFile(0)
Else
MessageRequester("Information","Konnte Datei nicht erstellen!")
EndIf
If CreateFile(0, "Text2.csv")
While NextMapElement(Datei2())
WriteStringN(0, Datei2())
Wend
CloseFile(0)
Else
MessageRequester("Information","Konnte Datei nicht erstellen!")
EndIf
SendMessage_(GadgetID(2),#EM_SHOWSCROLLBAR, #SB_VERT, 1)
SendMessage_(GadgetID(2),#EM_SHOWSCROLLBAR, #SB_HORZ, 1)
SendMessage_(GadgetID(3),#EM_SHOWSCROLLBAR, #SB_VERT, 1)
SendMessage_(GadgetID(3),#EM_SHOWSCROLLBAR, #SB_HORZ, 1)
EditorGadget(2, 10, 0, 1120, 340,#PB_Editor_ReadOnly)
EditorGadget(3, 10, 350, 1120, 580,#PB_Editor_ReadOnly)
TextGadget(5, 1180,40, 100,25, "Auswertezeit:")
StringGadget(4,1180, 60, 50,25,Str(Time))
;Anzahl_Datei1_1 = ListSize(Datei1_1())
;Anzahl_Datei2 = MapSize(Datei2())
ResetList(Datei1_1())
ResetMap(Datei2())
DateiName1$ =GetFilePart(FileName1$)
AddGadgetItem(2, 1, DateiName1$)
DateiName2$ =GetFilePart(FileName2$)
AddGadgetItem(3, 1, DateiName2$)
a = 1
While NextElement(Datei1_1())
a = a +1
AddGadgetItem(2, a, Datei1_1())
Wend
While NextMapElement(Datei2())
a = a +1
AddGadgetItem(3, a, Datei2())
Wend
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow ; If the user has pressed on the close button
Quit = 1
EndIf
Until Quit = 1
EndIf
;End ; All the opened windows are closed automatically by PureBasic
EndProcedure