Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehler 9105 - Zeichenfolge länger 255 Zeichen

Forumthread: Fehler 9105 - Zeichenfolge länger 255 Zeichen

Fehler 9105 - Zeichenfolge länger 255 Zeichen
22.09.2015 11:34:46
Chris
Hallo,
aus dem Forum habe ich mir den Codeschnipsel von fcs gemoppst (https://www.herber.de/forum/ _ archiv/1032to1036/1032638_Aus_Excelmakro_Word_Serienbrief_starten.html), allerdings meckert VBA, dass die Zeichenfolge länger als 255 Zeichen ist. Dazu ist folgender Code markiert - wollte jetzt nicht in ein Forenbeitrag von 2008 posten:

.OpenDataSource Name:="C:\Temp\liste.xlsm", _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, _
Revert:=False, Format:=wdOpenFormatAuto, _
Connection:="Provider=Microsoft.Jet.OLEDB.4.0;Password="""";" _
& "User ID=Admin;" _
& "Data Source=C:\Temp\liste.xlsm;" _
& "Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";" _
& "Jet OLEDB:System database="""";" & "Jet OLEDB:Registry Path="""";" _
& "Jet OLEDB:Database Password="""";" _
& "Jet OLEDB:Engine ", _
SQLStatement:="SELECT * FROM `Abbildung$`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess

Jetzt habe ich ein bisschen nach dem Fehler gegoogled, finde aber nur Hinweise von Stringvariablen, deren Inhalt eben größer als 255 Zeichen ist. Hier arbeite ich allerdings ohne Strings, daher verstehe ich diesen Fehler einfach nicht. Hat hier jemand vielleicht eine Idee? Ich verzweifle langsam an dem nervigen Seriendruck mit Excel 2013 :)

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Text = Sting
22.09.2015 12:33:43
Tino
Hallo,
evtl. hilft es den Text für die Connection zuvor in einem String abzulegen.
Kannst mal so testen, habe ich jetzt aber nicht gemacht!
Dim sConString$
sConString = "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";" _
& "User ID=Admin;" _
& "Data Source=C:\Temp\liste.xlsm;" _
& "Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";" _
& "Jet OLEDB:System database="""";" & "Jet OLEDB:Registry Path="""";" _
& "Jet OLEDB:Database Password="""";" _
& "Jet OLEDB:Engine "
.OpenDataSource Name:="C:\Temp\liste.xlsm", _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, _
Revert:=False, Format:=wdOpenFormatAuto, _
Connection:=sConString, _
SQLStatement:="SELECT * FROM `Abbildung$`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
'...
Gruß Tino

Anzeige
AW: Text = Sting
22.09.2015 12:55:49
Chris
Hi,
jetzt bekomme ich nur noch, dass der Index außerhalb des gültigen Bereichs liegt. Aber danke schonmal für deinen Tipp

lade eine Beispieldatei hoch oT.
23.09.2015 09:12:39
Tino

lade eine Beispieldatei hoch oT.
23.09.2015 09:47:59
Tino

Anzeige
AW: Text = Sting
23.09.2015 12:47:17
fcs
Hallo Chris,
ich hab mal unter Word ein wenig getestet.
der Connection-Text darf tatsächlich unter VBA nur 255 Zeichnen lang sein.
Die Gesamtlänge des Connection-Strings ist aber viel länger, wird aber einfach vom Recorder abgeschnitten. Scheinbar sind die Parameter, die über Bord fallen nicht so wichtig, da es sich um die Standard-Werte handelt. Da auch der Dateiname Teil des Connection-Strings ist, sollte der Pfad und Dateiname nicht zu viele Zeichen enthalten.
Wichtig ist, dass du den Provider noch überprüfst, der kann mit Office/Windowsversion sich ändern.
Zeichne das Erstellen Serienbrief.Datenverbindung mit dem Makrorekorder auf, um den korrekten Wert zu erhalten oder benutze mein Analyse-Makro unter Word.
Gruß
Franz
'Erstelt unter Word/Excel 2010 / Windows 7
Sub Vorbereiten_Serienbrief_Word()
' Makro1 Makro
Dim xlFile As String, strCon As String
Dim wdDoc As Word.Document
xlFile = "D:\Test\liste.xlsm"
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "User ID=Admin;" _
& "Data Source=" & xlFile & ";Mode=Read;" _
& "Extended Properties=""HDR=YES;IMEX=1;"";" _
& "Jet OLEDB:System database="""";" _
& "Jet OLEDB:Registry Path="""";" _
& "Jet OLEDB:Engine Type=37;" _
'Connection-Parameter Teil 2
strCon = strCon ' & "Jet OLEDB:Database Locking Mode=0;" _
& "Jet OLEDB:Global Partial Bulk Ops=2;" _
& "Jet OLEDB:Global Bulk Transactions=1;" _
& "Jet OLEDB:New Database Password="";" _
& "Jet OLEDB:Create System Database=False;" _
& "Jet OLEDB:Encrypt Database=False;" _
& "Jet OLEDB:Don't Copy Locale on Compact=False;" _
& "Jet OLEDB:Compact Without Replica Repair=False;" _
& "Jet OLEDB:SFP=False;" _
& "Jet OLEDB:Support Complex Data=False;" _
& "Jet OLEDB:Bypass UserInfo Validation=False"
Set wdDoc = Word.ActiveDocument
wdDoc.MailMerge.MainDocumentType = wdFormLetters
With wdDoc.MailMerge
.OpenDataSource Name:=xlFile, _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:=strCon, _
SQLStatement:="SELECT * FROM `Abbildung$`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
End With
End Sub
'Test-Makro unter Word
Sub Analyse_MailMergeDataSource()
Dim objObject As Word.MailMergeDataSource
Dim wdDoc As Document
Dim strCon As String
Set wdDoc = ActiveDocument
Set objObject = wdDoc.MailMerge.DataSource
With objObject
strCon = .ConnectString
Debug.Print strCon
End With
End Sub

Anzeige
AW: Text = Sting
23.09.2015 13:49:16
Chris
Ah super - danke fcs,
jetzt wollte ich per Makrorecorder den Provider überprüfen, gehe auf "Empfänger auswählen", wähle die xlsm Datei aus und bekomme als Fehlermeldung: "Fehler: Die externe Tabelle hat nicht das erwartete Format.." Geht unter Office 2013 xlsm als Datenliste nicht mehr oder liegt der Ursprung des Fehlers vllt in der Exceldatei?

Anzeige
AW: Text = Sting
23.09.2015 17:04:53
fcs
Hallo Chris,
ich hab ja unter Excel 2010 getestet. Da funktioniert es auch mit einer Excel-Datei mit Makros (xlsm)
Kannst du die xlsm-Datei unter Excel ohne Probleme öffnen?
Die Excel-Datei darf nicht geöffnet sein, wenn du von Word die Datenquelle öffnest. Das macht Kummer, allerdings sollte die Fehlermeldung anders sein.
Gruß
Franz

Anzeige
AW: Text = Sting
25.09.2015 10:12:43
Chris
Die Datei funktioniert in Excel ohne Probleme. Habe mir das jetzt nochmal angeguckt, bekomme aber, wenn ich deine Idee mit den Strings umsetze, immer noch hier bei deisem Schritt die Fehlermeldung, dass der Zeichensatz zu lang ist.
.OpenDataSource Name:=xlFile, _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, _
Revert:=False, Format:=wdOpenFormatAuto, _
Connection:=strCon, _
SQLStatement:="SELECT * FROM `Abbildung$`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess

Anzeige
AW: Text = Sting
25.09.2015 16:18:11
Chris
jetzt hat es funktioniert. Allerdings bekomme ich beim ersten Ausführen, dass die Remote Verbindung nicht vorhanden sei. Gehe ich auf "Beenden" und führe das Makro nochmal aus, funktioniert alles ohne Probleme.
;
Anzeige
Anzeige

Infobox / Tutorial

Fehler 9105 - Zeichenfolge länger 255 Zeichen im Excel-Seriendruck


Schritt-für-Schritt-Anleitung

Um den Fehler 9105 zu beheben, der darauf hinweist, dass eine Zeichenfolge länger als 255 Zeichen ist, kannst du folgende Schritte ausführen:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke auf "Einfügen" und wähle "Modul".

  3. Code anpassen: Verwende den folgenden VBA-Code, um die Verbindung zu deiner Excel-Datei herzustellen:

    Dim sConString As String
    sConString = "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";" _
    & "User ID=Admin;" _
    & "Data Source=C:\Temp\liste.xlsm;" _
    & "Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";"
    
    ' Öffne die Datenquelle
    With ActiveDocument.MailMerge
       .OpenDataSource Name:="C:\Temp\liste.xlsm", _
       ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
       AddToRecentFiles:=False, Revert:=False, Format:=wdOpenFormatAuto, _
       Connection:=sConString, _
       SQLStatement:="SELECT * FROM `Abbildung$`", SQLStatement1:="", _
       SubType:=wdMergeSubTypeAccess
    End With
  4. Makro ausführen: Führe das Makro aus, um sicherzustellen, dass die Verbindung erfolgreich hergestellt wird.


Häufige Fehler und Lösungen

  • Die externe Tabelle hat nicht das erwartete Format: Dieser Fehler tritt auf, wenn die Excel-Datei nicht korrekt formatiert ist oder wenn sie bereits geöffnet ist. Stelle sicher, dass die Datei geschlossen ist, bevor du versuchst, sie als Datenquelle zu verwenden.

  • Index außerhalb des gültigen Bereichs: Dieser Fehler kann entstehen, wenn der SQL-Befehl nicht korrekt ist oder wenn die Tabelle nicht existiert. Überprüfe den Tabellennamen und die SQL-Anweisung.

  • Zeichenfolge zu lang (mehr als 255 Zeichen): Wenn der Connection-String länger als 255 Zeichen ist, kann er abgeschnitten werden. Verwende eine String-Variable für den Connection-String, um die Länge zu reduzieren.


Alternative Methoden

Falls der Fehler weiterhin besteht, kannst du folgende Alternativen ausprobieren:

  • Verwende die ACE OLEDB Provider:

    strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Temp\liste.xlsm;Extended Properties='Excel 12.0 Xml;HDR=YES';"
  • Verkürze den Pfad: Achte darauf, dass der Pfad zur Excel-Datei nicht zu lang ist.


Praktische Beispiele

Hier sind einige Beispiele, um den Fehler zu vermeiden:

  1. Verwendung von weniger Zeichen im Pfad:

    xlFile = "C:\Temp\liste.xlsm" ' Stelle sicher, dass der Pfad kurz ist
  2. Verkürzung des Connection-Strings:

    strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\liste.xlsm;" _
    & "Extended Properties='Excel 8.0;HDR=YES';"

Tipps für Profis

  • Debugging: Verwende Debug.Print im VBA, um den Connection-String zu überprüfen und sicherzustellen, dass er korrekt ist.
  • Makro-Rekorder: Nutze den Makro-Rekorder in Word, um den korrekten Connection-String zu erhalten und Fehler zu vermeiden.
  • Dateiformat prüfen: Stelle sicher, dass die Excel-Datei im korrekten Format vorliegt (xlsm oder xlsx) und keine zusätzlichen Makros enthält, die Probleme verursachen könnten.

FAQ: Häufige Fragen

1. Warum erhalte ich die Fehlermeldung "Die externe Tabelle hat nicht das erwartete Format"?
Diese Meldung erscheint oft, wenn die Excel-Datei nicht im richtigen Format ist oder sie bereits geöffnet ist. Stelle sicher, dass die Datei geschlossen ist und im richtigen Format vorliegt.

2. Was kann ich tun, wenn mein Connection-String länger als 255 Zeichen ist?
Verkürze den Pfad zur Datei oder teile den Connection-String in mehrere Variablen auf, um die maximale Zeichenanzahl zu reduzieren.

3. Funktioniert das Makro auch mit Excel 2013?
Ja, das Makro sollte auch in Excel 2013 funktionieren, solange die Datei im richtigen Format vorliegt und die Verbindungen korrekt gesetzt sind.

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