Exceltabelle nach Word

josef24

Erfahrenes Mitglied
Hallo, ich suche nochmal Unterstützung in folgendem VBA Code:

Visual Basic:
Public Sub cmdZuzah_Click()

    ' Pfad zur Word-Vorlage
    pfadZurVorlage = "C:\Users\Besitzer\Desktop\Word Vorlagen\Zuza für Excel.dotx"
    
    ' Word-Anwendung erstellen und Dokument öffnen
    Set obj_Wd = CreateObject("WORD.Application")
    Set obj_Doc = obj_Wd.Documents.Add(Template:=pfadZurVorlage)
    obj_Doc.Windows(1).Visible = True

    ' ArbTab Tabelle entsperren
    Worksheets("ArbTab").Unprotect

    ' Arbeitsblatt und Tabelle festlegen
    Set wsh_Q = ThisWorkbook.Worksheets("ArbTab")
    Set liO = wsh_Q.ListObjects(1)

    ' Autofilter zurücksetzen und alle Daten anzeigen
    liO.AutoFilter.ShowAllData

    ' Nutzereingabe für die betroffene Gymnastikgruppe
    Gruppe = Application.InputBox(Title:="Auswahl der betroffenen Gymnastikgruppe", Prompt:="Geben Sie die Nummer der Sportgruppe ein:", _
    Default:="Hier eingeben", Type:=1)

    ' Autofilter anwenden
    liO.Range.AutoFilter Field:=14, Criteria1:=Gruppe

    ' Spaltenformatierung anpassen
    With liO.Range
        .Columns.Hidden = True
        .Columns(2).ColumnWidth = 12
        .Columns(4).ColumnWidth = 14
        .Columns(5).ColumnWidth = 11
        .Columns(22).ColumnWidth = 15
        .Columns(23).ColumnWidth = 25
    End With

    ' Inhalte kopieren und in Word einfügen
    liO.Range.Cells(1).CurrentRegion.Copy
    obj_Doc.bookmarks("Anrede").Range.Paste

    ' Alle ausgeblendeten Spalten wieder anzeigen
    liO.Range.Columns.Hidden = False

    ' Autofilter zurücksetzen und alle Daten anzeigen
    liO.AutoFilter.ShowAllData

    ' Meldung zur Fertigstellung
    MsgBox "Fertig"

    ' ArbTab Tabelle wieder sperren
    Worksheets("ArbTab").Protect

    ' Word und Objekte freigeben
    Set obj_Wd = Nothing
    Set obj_Doc = Nothing
    Set wsh_Q = Nothing
    Set liO = Nothing
End Sub

Wenn ich mit F8 durchklicke, kommt folgender Fehler.
Fehler bei: Index außerhalb des gültigen Bereichs, Laufzeitfehler 9.
Ich habe im Worddokument einen Textmarker "Anrede" gesetzt. Ist damit vielleicht etwas nicht korrekt?
 
Das heisst, es gibt kein Eintrag mit dem Index 1. Falls du deas erste ListObjekt auswählen willst, dann solltest du Index 0 nehmen, Indexe beginnen immer mit 0.
Visual Basic:
Set liO = wsh_Q.ListObjects(0)
 
Achja, stimmt. Ist VBA in Excel (ein Programm das verboten gehört). Da ist es unnatürlicherweise nicht immer so.
 
Achja, stimmt. Ist VBA in Excel (ein Programm das verboten gehört). Da ist es unnatürlicherweise nicht immer so.
Das hat nix mit vba oder excel zu tun.
nimm nur die Array-Repräsentation eines Strings.
EinString(0) wird auch spannend

und die Aussage dass arrays bei 0 anfangen, stammt von C, weil in C die array und Zeiger Notation gleichwertig sind.
und in dem Fall der Index den Offset zum anfang darstellt

zum glück erlauben moderne Sprachen selbst fest zu legen wo ein array beginnt
 
Danke für die Antworten. Aber leider kein Erfolg. Ich verstehe es nicht so recht, weil der Fehler jetzt neu auftritt. Das ist in dem schon gegangen. Darum meine Anfrage hier. Gruß
 
enthält wsh_Q.ListObjects überhaupt einen Eintrag?
Mal im Debugger-Fenster anschauen
ListObjects ist eine Collection, und wenn da nix drin ist, ist nix drin was du abrufen könntest.
da ListObjects eine Collection ist, kann man die mit "Count" prüfen" ob was drin ist
 
Danke, konnte eine vergleichbare Datei heranziehen, und entsprechend die Inhalte auf mein neues Bedürfnis anpassen. Mit Ausnahme des Tabelleninhalts habe ich nichts verändert, und wie schon berichtet gibt es keine Probleme. Gruß Josef
 

Neue Beiträge

Zurück