Es gibt ein merkwürdiges Problem bei der Benutzung der LEFT-Funktion in VBA unter Access. Um Planmaker-Aufrufe in dem VBA zu nutzen, muß ich die "Planmaker Automation Type Library" unter den Verweisen (als letzte aktive) einbinden. Dadurch wird ein Fehler beim Compile erzeugt, wenn die Funktion LEFT benutzt wird. Entfernt man die Library, läuft der Compile durch. Dies passiert unter Access2010 und Access2021. Das Problem ist aber kein Show-Stopper, man kann die LEFT-Funktion durch die MID-Funktion ersetzen.
(Dieser Beitrag soll anderen Benutzern das lange Suchen nach einer Lösung ersparen)
VBA-Access und Planmaker und LEFT-Funktion
VBA-Access und Planmaker und LEFT-Funktion
- Dateianhänge
-
- verweise.JPG (20.22 KiB) 1882 mal betrachtet
-
- Compile-Fehler.jpg (16.87 KiB) 1882 mal betrachtet
Re: VBA-Access und Planmaker und LEFT-Funktion
Vielen Dank, dass Sie dieses Problem mit einem Screenshot des Fehlers gemeldet haben. Bitte teilen Sie uns die zugehörigen Dateien mit, in denen das Problem auftritt, damit wir weitere Untersuchungen zur Problemlösung durchführen können.
Wenn Sie uns die Datei privat zusenden möchten, senden Sie uns bitte eine E-Mail an forum[at]softmaker.de
Bitte geben Sie auch die Forum-URL dieses Themas an, damit wir Ihre E-Mail zurückverfolgen können.
viewtopic.php?f=356&t=29279
Wenn Sie uns die Datei privat zusenden möchten, senden Sie uns bitte eine E-Mail an forum[at]softmaker.de
Bitte geben Sie auch die Forum-URL dieses Themas an, damit wir Ihre E-Mail zurückverfolgen können.
viewtopic.php?f=356&t=29279
Re: VBA-Access und Planmaker und LEFT-Funktion
Sie rufen Access auf, öffnen eine leere Datenbank. Über "Erstellen/Visual Basic" gehen Sie in die VBA-Umgebung. Dort fügen Sie einen neuen Modul ein:
Public Sub Testx()
Dim text1 As String
Dim text2 As String
text1 = "abc"
text2 = Left(text1, 1)
End Sub
Diesen kann man über Debug/Einzelschritt ausführen.
Der Fehler tritt nur dann auf, wenn man unter "Extras/Verweise" die "Planmaker Automation Type Library" wie in meiner Hardcopy oben gezeigt hinzufügt.
Ich hoffe, das hilft Ihnen.
Public Sub Testx()
Dim text1 As String
Dim text2 As String
text1 = "abc"
text2 = Left(text1, 1)
End Sub
Diesen kann man über Debug/Einzelschritt ausführen.
Der Fehler tritt nur dann auf, wenn man unter "Extras/Verweise" die "Planmaker Automation Type Library" wie in meiner Hardcopy oben gezeigt hinzufügt.
Ich hoffe, das hilft Ihnen.
Re: VBA-Access und Planmaker und LEFT-Funktion
Vielen Dank für die Mitteilung weiterer Details. Ich habe die Details an unser Entwicklerteam weitergeleitet, damit dieses Problem untersucht werden kann.
Re: VBA-Access und Planmaker und LEFT-Funktion
Das Häkchen in VBA/Tools/References legt fest, welche VBA-Funktionen standardmäßig, d.h. ohne Präfix, zur Verfügung stehen.
Setzen Sie bitte kein Häkchen bei "PlanMaker Automation Type Library" und verwenden Sie bei Bedarf die LEFT-Funktion von PlanMaker mit Präfix, wie im folgenden Beispiel gezeigt:
Setzen Sie bitte kein Häkchen bei "PlanMaker Automation Type Library" und verwenden Sie bei Bedarf die LEFT-Funktion von PlanMaker mit Präfix, wie im folgenden Beispiel gezeigt:
Code: Alles auswählen
Public Sub Testx()
Dim text1 As String
Dim text2 As String
Set pm = CreateObject("PlanMaker.Application")
text1 = "SofTMaker Office"
text2 = Right(text1, 2)
text2 = Left(text1, 2) '←— calls the VBA function
MsgBox text2
MsgBox pm.Name
MsgBox pm.Left '←— calls the PM function
End Sub
Re: VBA-Access und Planmaker und LEFT-Funktion
Ich bin wohl von falschen Voraussetzungen ausgegangen. Ich muß nicht den Verweis benutzen, um Planmaker aufrufen zu können. Ich habe Compile-Fehler erhalten, aber nicht gesehen, daß der Compiler nur fehlende Variablendefinitionen bemängelt hat. Gerade habe ich den Verweis entfernt und die Source geändert:
Set pm = CreateObject("PlanMaker.Application")
....
pm.Workbooks.Open fn1, False, pmFormatPlainTextUnicode, , , ";", pmImportTextMarkerNone
pm.ActiveWorkbook.SaveAs fn2, pmFormatMSXML
pm.ActiveWorkbook.Close smoDoNotSaveChanges
....
pm.Application.Quit
Set pm = Nothing
die obige Source ergibt die Fehler, aber wenn man die Variablen qualifiziert angibt, funktioniert es:
...
pm.Workbooks.Open fn1, False, pm.pmFormatPlainTextUnicode, , , ";", pm.pmImportTextMarkerNone
pm.ActiveWorkbook.SaveAs fn2, pm.pmFormatMSXML
pm.ActiveWorkbook.Close pm.smoDoNotSaveChanges
Vielen Dank
Set pm = CreateObject("PlanMaker.Application")
....
pm.Workbooks.Open fn1, False, pmFormatPlainTextUnicode, , , ";", pmImportTextMarkerNone
pm.ActiveWorkbook.SaveAs fn2, pmFormatMSXML
pm.ActiveWorkbook.Close smoDoNotSaveChanges
....
pm.Application.Quit
Set pm = Nothing
die obige Source ergibt die Fehler, aber wenn man die Variablen qualifiziert angibt, funktioniert es:
...
pm.Workbooks.Open fn1, False, pm.pmFormatPlainTextUnicode, , , ";", pm.pmImportTextMarkerNone
pm.ActiveWorkbook.SaveAs fn2, pm.pmFormatMSXML
pm.ActiveWorkbook.Close pm.smoDoNotSaveChanges
Vielen Dank