Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Fehler bei String, left, mid

Forumthread: VBA - Fehler bei String, left, mid

VBA - Fehler bei String, left, mid
12.02.2007 10:10:25
Uwe
Hallo,
unten stehendes Makro funktioniert zwar in einer Testdatei, in der eigentlichen Datei jedoch nicht.
Folgende Fehlermeldung erscheint bei TempName = String(1024, 0)'Einstellung des Standdarddruckers
"Projekt oder Bibliothek nicht gefunden".
Die gleiche Meldung erhalte ich bei "left" und "mid", wenn ich String bzw. left deaktiviert habe.
Ich habe das Makro aus der Testdatei 1 zu 1 in mein Tool kopiert. Daher weiss ich jetzt auch nicht, woran es liegen kann. Auch in einem anderen Tool arbeite ich mit diesem Makro und es funktioniert. Da mein Tool rd. 4 MB groß ist und auch gezippt nicht als link herunterzuladen ist, kann ich das Tool leider nicht einstellen.
Ich hoffe, Ihr könnt mir dennoch einen Tipp geben, woran es liegen kann.
Gruß
Uwe
Declare

Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" _
(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long) As Long
Declare 

Function GetProfileSection Lib "kernel32" Alias "GetProfileSectionA" _
(ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long

Sub PDF()
On Error GoTo Ende
Application.ScreenUpdating = False
'nicht benötigtes Tabellenblatt ausblenden
Tabelle11.Visible = False
'alle anderen Tabellenblätter auswählen
Dim ii As Integer
For ii = 1 To Sheets.Count
If Sheets(ii).Visible = True Then
Sheets(ii).Select False
End If
Next ii
'PDF-Drucker einstellen und PDF-Datei erstellen
Application.ActivePrinter = "eDocPrinter PDF Pro auf Ne01:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"eDocPrinter PDF Pro auf Ne02:", Collate:=True _
'nicht benötigtes Tabellenblatt wieder einblenden
Tabelle11.Visible = True
Tabelle11.Select
Dim Drucker As String
Drucker = Application.ActivePrinter
Application.ActivePrinter = Drucker
'Standarddrucker wieder einstellen
Dim TempName As String
Dim DeviceNr As Long
Dim GetDefaultPrinter As String
TempName = String(1024, 0)
DeviceNr = GetProfileString("windows", "device", 0&, TempName, 1024)
If DeviceNr > 0 Then
GetDefaultPrinter = Left(TempName, InStr(TempName, ",") - 1) & " auf " & Mid(TempName, InStr(TempName, ":") - 4, 5)
End If
Application.ActivePrinter = GetDefaultPrinter
Ende:
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Fehler bei String, left, mid
12.02.2007 11:18:35
PeterB
Hi Uwe,
probier es bei den angemeckerten Ausdrücken mal mit Aufführen aller Klassen, also
statt Left(..., ...) eben VBA.Strings.Left(..., ...) .
Ich weiß zwar nicht warum, aber bei geht's dann wieder.
Gruß
Peter
AW: VBA - Fehler bei String, left, mid
12.02.2007 16:43:41
Uwe
Hallo Peter,
Klasse, hat funktioniert.
Dennoch frag ich mich, warum es bei dem anderen Tool auch ohne den Zusatz VBA funktioniert hat?
Vielen Dank.
Gruß
Uwe
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA-Fehler bei String, Left und Mid beheben


Schritt-für-Schritt-Anleitung

  1. Makro öffnen: Öffne das VBA-Editor-Fenster in Excel.
  2. Makro überprüfen: Überprüfe die Zeilen, in denen Left und Mid verwendet werden. Wenn du Fehler erhältst, wie "Projekt oder Bibliothek nicht gefunden", kann es daran liegen, dass Excel nicht auf die richtigen Klassen zugreift.
  3. Klassenbezeichner hinzufügen: Ändere die Aufrufe von Left und Mid zu VBA.Strings.Left und VBA.Strings.Mid. Dies sieht dann so aus:
    GetDefaultPrinter = VBA.Strings.Left(TempName, InStr(TempName, ",") - 1) & " auf " & VBA.Strings.Mid(TempName, InStr(TempName, ":") - 4, 5)
  4. Makro erneut ausführen: Speichere die Änderungen und führe das Makro erneut aus, um sicherzustellen, dass der Fehler beseitigt ist.

Häufige Fehler und Lösungen

  • Fehlermeldung: "Projekt oder Bibliothek nicht gefunden": Diese Meldung tritt häufig auf, wenn VBA nicht auf die richtigen Bibliotheken zugreifen kann. Überprüfe, ob alle benötigten Verweise im VBA-Editor korrekt gesetzt sind.

  • Funktioniert nicht in der Hauptdatei, aber in der Testdatei: Das kann daran liegen, dass in der Testdatei die Einstellungen oder Bibliotheken anders konfiguriert sind. Prüfe die Projektverweise in deinem Hauptdokument.


Alternative Methoden

Wenn du weiterhin auf Probleme stößt, kannst du folgende Alternativen in Betracht ziehen:

  • Verwendung von Access VBA: Wenn dein Projekt auch in Access läuft, könntest du die Funktionen Left und Mid aus Access verwenden, um die Fehler zu umgehen.

  • Direkte String-Manipulation: Anstatt Left und Mid zu verwenden, kannst du auch InStr und Len kombinieren, um die gewünschten Teile eines Strings zu extrahieren.


Praktische Beispiele

Hier ist ein Beispiel, das die Verwendung von VBA.Strings.Left und VBA.Strings.Mid zeigt:

Dim exampleString As String
exampleString = "Drucker, USB001"

Dim printerName As String
printerName = VBA.Strings.Left(exampleString, InStr(exampleString, ",") - 1)

Debug.Print printerName  ' Gibt "Drucker" aus

In diesem Beispiel wird der Druckername aus dem String exampleString extrahiert, ohne dass ein Fehler auftritt.


Tipps für Profis

  • Verweise überprüfen: Regelmäßig die Bibliotheksverweise im VBA-Editor überprüfen, um sicherzustellen, dass keine fehlenden oder veralteten Verweise vorhanden sind.

  • Fehlerbehandlung einbauen: Verwende On Error Resume Next und On Error GoTo für eine bessere Fehlerbehandlung, um herauszufinden, wo dein Makro möglicherweise scheitert.


FAQ: Häufige Fragen

1. Warum funktioniert das Makro in einer Testdatei, aber nicht in der Hauptdatei?
Das kann an unterschiedlichen Einstellungen oder fehlenden Verweisen in der Hauptdatei liegen. Überprüfe die Verweise im VBA-Editor.

2. Muss ich immer VBA.Strings.Left und VBA.Strings.Mid verwenden?
Es ist empfehlenswert, um sicherzustellen, dass der Code in verschiedenen Umgebungen ohne Probleme läuft.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige