Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 509 und 5941 und 4605 in einem Makr

Forumthread: Laufzeitfehler 509 und 5941 und 4605 in einem Makr

Laufzeitfehler 509 und 5941 und 4605 in einem Makr
13.05.2015 12:33:45
Ju
Hallo zusammen,
ich quäle mich schon viel zu lange an folgendem Problem ab:
In eine Word-Briefvorlage sollen per Makro noch Dinge wie spezifische vom User einzugebende Kundennummer, Logo und Fußzeile eingefügt werden. Die Briefvorlage ist schreibgeschützt, es gibt also lediglich Schreibfelder in die der User noch Werte eintragen kann.
Leider bekomme ich jedoch immer Laufzeitfehler. Beim Einfügen des Logos kommt folgende Fehlermeldung:
Laufzeitfehler 509: Der ViewHeaderOnly Befehl ist nicht verfügbar, weil dieser Befehl für den Lesemodus nicht zur Verfügung steht.
Der entsprechende Code ist:
Sub copylogo()
If ActiveDocument.ProtectionType  wdNoProtection Then ActiveDocument.Unprotect
UserForm1.Hide
Documents.Open "G:\03_Textverarbeitung\Briefe - 2012\Logo.docx"
WordBasic.viewheaderonly
Selection.WholeStory
Selection.Copy
ThisDocument.Activate
WordBasic.viewheaderonly
Selection.Paste
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Windows("Logo.docx").Close
End Sub
Dies ist Modul 2 in dem Projekt. Wenn ich ein On Error Resume Next an den Anfang stelle, kommt diese Fehlermeldung nicht mehr aber dafür bleibt am Ende das Dokument Logo.docx geöffnet, d.h. der .Close Befehl wird ignoriert. (Dort kam zuvor ansonsten folgender Fehler: "Laufzeitfehler 5941: Das angeforderte Element ist nicht in der Sammlung vorhanden.")
Bei anderen zuvor durchzuführenden Arbeitsschritten des Codes (In Modul 1) (Einfügen der Kundennummer o.ä.) kommt ebenfalls eine Fehlermeldung, nämlich:
Laufzeitfehler 4605: Die OpenDataSource-Methode oder -Eigenschaft ist nicht verfügbar, weil dieser Befehl für den Lesemodus nicht zur Verfügung steht.
Der entsprechende Code hierzu ist:
Sub test2(plz As Double)
If ActiveDocument.ProtectionType  wdNoProtection Then ActiveDocument.Unprotect
ActiveDocument.MailMerge.OpenDataSource _
Name:="(....) 9999_Kundenstamm_für_Brieferstellung.xls", _
Format:=wdOpenFormatAuto, _
AddToRecentFiles:=False, _
ConfirmConversions:=False, _
LinkToSource:=True, _
Revert:=False, _
Connection:="Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\Test.  _
_
xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB: _
Registry Path="""";Jet OLED", _
SQLStatement:="SELECT * FROM `Tabelle1$` Where KUNR = " & plz, _
SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
UserForm1.Hide
WordBasic.viewfooteronly
Selection.WholeStory
Selection.Delete
Documents.Open FileName:= _
"G:\03_Textverarbeitung\Briefe - 2012\99_Fußzeile.docm", _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto, XMLTransform:=""
Selection.WholeStory
Selection.Copy
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
ThisDocument.Activate
Selection.Paste
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Windows("99_Fußzeile.docm").Close
Selection.WholeStory
Selection.Fields.Locked = True
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect wdAllowOnlyFormFields
End If
End Sub
Beim Debuggen wird der gesamte erste Zeilenblock (hier fett markiert) markiert. Ich konnte den Fehler vermeiden, indem ich den Code-Teil "Mode=Read;Extended Properties=""HDR=YES;" rausgenommen habe, weiß aber nicht, ob das negative Auswirkungen hat?!!!
Ich wäre froh, über jegliche Hilfe bezüglich all dieser Laufzeitfehler. Anmerkung: Es gibt die Vermutung, dass all dies mit der Verwendung unterschiedlicher Office Versionen in der Firma zu tun hat. Ist das möglich und wie kann man Fehler die dadurch entstehen verhindern?
Besten Dank schon jetzt für eure Hilfe!!

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Warum fragst du nicht in einem Office-Forum, ...
13.05.2015 14:35:32
Luc:-?
…Abteilung Word-VBA, Ju Lud,
sondern in einem speziell auf Xl abgestellten. Nicht jeder AWer hat hier Lust, sich in ein Word-VBA-Problem hineinzudenken…
Gruß, Luc :-?

Na, dann muss er dort warten und nicht hier ...
13.05.2015 17:26:40
Luc:-?
…das Forum vermüllen, Steve.
Gruß, Luc :-?
;
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 509, 5941 und 4605 im Makro beheben


Schritt-für-Schritt-Anleitung

  1. Makro öffnen: Öffne Excel und lade das entsprechende Makro, das die Probleme verursacht.
  2. Fehleridentifikation: Überprüfe den Codeabschnitt, der den Laufzeitfehler 509, 5941 oder 4605 auslöst.
  3. Dokumentenschutz entfernen: Stelle sicher, dass du den Schutz des Dokuments entfernst, bevor du Änderungen vornimmst. Füge folgenden Code ein:
    If ActiveDocument.ProtectionType <> wdNoProtection Then ActiveDocument.Unprotect
  4. Fehlerhafte Zeilen anpassen: Überarbeite die Zeilen, die die Fehler verursachen. Bei Laufzeitfehler 5941, achte darauf, dass das angeforderte Element tatsächlich existiert und nicht schreibgeschützt ist.
  5. Testen: Führe das Makro erneut aus, um zu überprüfen, ob die Probleme behoben sind.

Häufige Fehler und Lösungen

  • Laufzeitfehler 509: Dieser Fehler tritt häufig auf, wenn der Befehl ViewHeaderOnly im Lesemodus verwendet wird. Stelle sicher, dass du das Dokument nicht im geschützten Modus bearbeitest.

  • Laufzeitfehler 5941: Dieser Fehler zeigt an, dass das angeforderte Element nicht in der Sammlung vorhanden ist. Überprüfe, ob das Dokument oder die Datei, auf die zugegriffen werden soll, existiert und ordnungsgemäß geöffnet wurde.

  • Laufzeitfehler 4605: Dieser Fehler tritt oft auf, wenn die OpenDataSource-Methode im Lesemodus verwendet wird. Vergewissere dich, dass der Dokumentenschutz deaktiviert ist, bevor du diese Methode aufrufst.


Alternative Methoden

  • Verwendung von On Error Resume Next: Diese Methode kann helfen, das Makro ohne Unterbrechungen auszuführen, könnte jedoch dazu führen, dass Fehler unbemerkt bleiben. Verwende es mit Bedacht und überprüfe, ob das Dokument nach dem Schließen tatsächlich die gewünschten Änderungen aufweist.

  • Direktes Einfügen von Bildern: Anstelle von WordBasic.viewheaderonly kannst du das Bild auch direkt mit ActiveDocument.InlineShapes.AddPicture einfügen. Dies kann viele Probleme im Zusammenhang mit dem Lesemodus vermeiden.


Praktische Beispiele

Hier sind einige häufige Codeabschnitte, die du in deinen Makros verwenden kannst:

  • Logo einfügen:

    Sub CopyLogo()
       If ActiveDocument.ProtectionType <> wdNoProtection Then ActiveDocument.Unprotect
       ActiveDocument.InlineShapes.AddPicture "G:\03_Textverarbeitung\Briefe - 2012\Logo.docx"
    End Sub
  • Kundennummer einfügen:

    Sub InsertCustomerNumber(plz As Double)
       If ActiveDocument.ProtectionType <> wdNoProtection Then ActiveDocument.Unprotect
       ' Hier deine Logik zur Einfügung der Kundennummer
    End Sub

Tipps für Profis

  • Versionen prüfen: Bei Verwendung unterschiedlicher Office-Versionen kann es zu Inkompatibilitäten kommen. Stelle sicher, dass alle Benutzer die gleiche Version von Office verwenden, um Laufzeitfehler zu vermeiden.

  • Testumgebung: Erstelle Testdokumente, um deine Makros zu debuggen, bevor du sie in produktiven Umgebungen verwendest. So kannst du Laufzeitfehler schneller identifizieren und beheben.

  • Fehlerprotokollierung: Implementiere eine einfache Fehlerprotokollierung, um herauszufinden, wo genau der Fehler auftritt. Dies kann dir helfen, die Probleme schneller zu diagnostizieren.


FAQ: Häufige Fragen

1. Was ist der Laufzeitfehler 509?
Der Laufzeitfehler 509 tritt auf, wenn ein Befehl im Lesemodus nicht verfügbar ist. Überprüfe, ob der dokumentenschutz entfernt wurde.

2. Wie kann ich Laufzeitfehler 5941 beheben?
Stelle sicher, dass das angeforderte Element in der Sammlung vorhanden ist und das Dokument nicht schreibgeschützt ist.

3. Warum erhalte ich Laufzeitfehler 4605?
Dieser Fehler weist darauf hin, dass eine Methode oder Eigenschaft, wie OpenDataSource, im Lesemodus nicht verfügbar ist. Deaktiviere den Dokumentenschutz, um diesen Fehler zu vermeiden.

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