Excel-Daten als Variablenwert in den UserFrom-Code bei Word

  • Word

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von TA1503.

    Excel-Daten als Variablenwert in den UserFrom-Code bei Word

    Hallo,

    ich habe eine Word Vorlage mit einer UserForm. Die ganzen Daten liegen im Code der UserForm. Das wollte ich nun ändern und die Werte aus einer Excel Tabelle importieren. Dann zeigt er mir allerdings einen Fehler an:

    Visual Basic-Quellcode

    1. Private Sub Document_New()
    2. Gesellschaft.Show vbModal
    3. End Sub


    Und es kommt die Fehlermeldung, dass ein Objekt erforderlich ist, wenn ich ein Dokument - basierend auf dieser Vorlage - öffne. Nehme ich den ganzen Excel-Quatsch allerdings wieder raus, funktioniert alles und die UserForm startet wie gewollt.

    Kann mir jemand helfen?

    Vielen Dank.
    Was steht denn im Initialize-Event?
    Wenn der Debugger beim Laden einer Userform einen Fehler erhält, wird beim debuggen nur der Show-Befehl markiert, obwohl der Fehler im Initialize-Event auftrat. Geh' mal mit dem Debugger durch und poste den Code, wo der Fehler auftrat (natürlich mit ein wenig drumherum :D).
    Vielen Dank schon mal für deine Antwort.

    Jetzt geht es natürlich :P Ich nehme an, dass ich das "Option Explicit" vergessen hatte.


    Aber vielleicht kannst du mir trotzdem helfen?


    Also ich habe eine UserForm und all die Sachen direkt in die UserFrom gelegt (VIEL Code). Das macht man so glaube ich auf keinen Fall, aber ich weiß nicht wirklich wie ich es besser machen kann. Hier mal als Auszug (ich weiß, meine nicht vorhandene Kommentierung muss ich auch überarbeiten):


    ----Ah, er hat beim Copy-/Paste-n die Struktur nicht beibehalten - um diese zu arbeiten hab ich jetzt leider keine Zeit----


    Auf jeden Fall, meine Fragen:


    * Hast du eine Idee, wie ich meinen Code splitten kann, sodass nicht alles hinter der UserForm liegt?
    * Gibt es eine Möglichkeit dass mit der Excel-Datei Sub-Übergreifend festzulegen? Sonst muss ich das ja jetzt für jeden Sub einzeln definieren?


    Danke


    Visual Basic-Quellcode

    1. Option Explicit
    2. Private Sub Confirm_Click()
    3. '------Pflichtfelder------
    4. Dim a As Long
    5. Dim b As Long
    6. b = 0
    7. With normen_auswahl
    8. For a = 0 To .ListCount - 1 If .Selected(a) = True Then b = b + 1 'count End IfNext aEnd With If gesellschaft_auswahl.Text = "" Then MsgBox "Die Angabe einer Gesellschaft ist Pflicht!" Exit SubEnd If
    9. If duesseldorf_auswahl.Value = False And berlin_auswahl.Value = False Then MsgBox "Die Angabe eines Ortes ist Pflicht!" Exit SubEnd If
    10. If ppv_auswahl.Text = "" Then MsgBox "Die Angabe eines Projektverantwortlichen ist Pflicht!" Exit SubEnd If (...)'------Fußzeile entsprechend ausfüllen------Dim firm As StringDim company As StringDim vorstand As StringDim sitz As StringDim gericht As StringDim telefon As StringDim telefax As StringDim straße As StringDim plz As StringDim web As String
    11. firm = gesellschaft_auswahl.Text
    12. Select Case firm Case "..." company = "..." vorstand = "..." sitz = "..." gericht = "..." Case "..." company = "..." vorstand = "..." sitz = "..." gericht = "..."(...)End Select
    13. (...)
    14. If ActiveDocument.Bookmarks.Exists("fußzeile_gerade") Then Set Marke6 = ActiveDocument.Bookmarks("fußzeile_gerade").Range Marke6.Text = company & ", " & straße & ", " & plz & Chr(10) & "Tel.: " & telefon & ", Fax: " & telefax & ", " & web ActiveDocument.Bookmarks.Add Name:="fußzeile_gerade", Range:=Marke6End If
    15. If ActiveDocument.Bookmarks.Exists("fußzeile_ungerade") Then Set Marke7 = ActiveDocument.Bookmarks("fußzeile_ungerade").Range Marke7.Font.Bold = False Marke7.Text = vorstand & Chr(10) & sitz & ", " & gericht ActiveDocument.Bookmarks.Add Name:="fußzeile_ungerade", Range:=Marke7 End If '------Referenzen entsprechend ein-/ausblenden------
    16. If referenz_ja.Value = True Then ActiveDocument.Bookmarks("Gesundheit").Range.Font.Hidden = False Else ActiveDocument.Bookmarks("Gesundheit").Range.Font.Hidden = True End If '------Hinweis bzgl. Prüfung/Zertifizierung entsprechend ein-/ausblenden------
    17. If zertifizierung_auswahl.Value = True Then ActiveDocument.Bookmarks("PuZ").Range.Font.Hidden = False Else ActiveDocument.Bookmarks("PuZ").Range.Font.Hidden = True End If
    18. '------Normen------If teilnahmeantrag_auswahl.Value = False Then Dim Count As Long Dim i As Long Dim counter As Integer
    19. With normen_auswahl
    20. For i = 0 To .ListCount - 1 If .Selected(i) = True Then Count = Count + 1 'count a = i + 1 'a=der wie vielte Listeneintrag ist markiert If a = 1 Then listboxvalue1 = "..." 'Inhalt der zweiten Spalte End If If a = 2 Then listboxvalue2 = "..." 'Inhalt der zweiten Spalte End If If a = 3 Then listboxvalue3 = "..." 'Inhalt der zweiten Spalte End If If a = 4 Then listboxvalue4 = "..." 'Inhalt der zweiten Spalte End If If a = 5 Then listboxvalue5 = "..." 'Inhalt der zweiten Spalte End If If a = 6 Then listboxvalue6 = "..." 'Inhalt der zweiten Spalte End If If a = 7 Then listboxvalue7 = "..." 'Inhalt der zweiten Spalte End If If a = 8 Then listboxvalue8 = "..." 'Inhalt der zweiten Spalte End If If a = 9 Then listboxvalue9 = "..." 'Inhalt der zweiten Spalte End If If a = 10 Then listboxvalue10 = "..." 'Inhalt der zweiten Spalte End If If a = 11 Then listboxvalue11 = "..." 'Inhalt der zweiten Spalte End If If a = 12 Then listboxvalue12 = "..." 'Inhalt der zweiten Spalte End If If a = 13 Then listboxvalue13 = "..." 'Inhalt der zweiten Spalte End If End If Next i End With
    21. Dim t As Integer
    22. If ActiveDocument.Bookmarks.Exists("Norm") Then Set Marke1 = ActiveDocument.Bookmarks("Norm").Range Count = Count + 1 t = 6 'Es wird die 7.Tabelle eingefügt/angesprochen If ActiveDocument.Bookmarks.Exists("Norm2") Then ActiveDocument.Tables(t).Delete End If Marke1.Select ActiveDocument.Tables.Add Range:=Marke1, NumRows:=Count, NumColumns:=4, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitContent ActiveDocument.Tables(t).Style = "Helles Raster - Akzent 1" ActiveDocument.Tables(t).ApplyStyleFirstColumn = False ActiveDocument.Tables(t).Cell(1, 1).Range.Text = "#" ActiveDocument.Tables(t).Cell(1, 2).Range.Text = "Norm" ActiveDocument.Tables(t).Cell(1, 3).Range.Text = "Beschreibung" ActiveDocument.Tables(t).Cell(1, 4).Range.Text = "Herausgeber" counter2 = 1 counter1 = 2 counter3 = 2 Do While counter1 <= Count ActiveDocument.Tables(t).Cell(counter1, 1).Range.Text = counter2 counter1 = counter1 + 1 counter2 = counter2 + 1 Loop If listboxvalue1 = "..." Then ActiveDocument.Tables(t).Cell(counter3, 2).Range.Text = listboxvalue1 ActiveDocument.Tables(t).Cell(counter3, 3).Range.Text = "..." ActiveDocument.Tables(t).Cell(counter3, 4).Range.Text = "..." counter3 = counter3 + 1 End If (...) End If
    23. ActiveDocument.Tables(t).Cell(1, 1).Select Selection.EndKey Unit:=wdRow, Extend:=True Selection.Rows.HeadingFormat = wdToggle ActiveDocument.Tables(t).Select Selection.Rows.AllowBreakAcrossPages = False
    24. Set Marke4 = ActiveDocument.Bookmarks("Tabellenunterschrift").Range Marke4.Select Selection.TypeBackspace
    25. Marke1.Select ActiveDocument.Bookmarks.Add Name:="Norm", Range:=Selection.Range ActiveDocument.Bookmarks.Add Name:="Norm2", Range:=Selection.RangeEnd If
    26. '------Projektverantwortung - Firmenname------If ActiveDocument.Bookmarks.Exists("company") Then Set Marke1 = ActiveDocument.Bookmarks("company").Range Marke1.Text = company ActiveDocument.Bookmarks.Add Name:="company", Range:=Marke1End If
    27. If ActiveDocument.Bookmarks.Exists("Beauftragung") Then Set Marke2 = ActiveDocument.Bookmarks("Beauftragung").Range Marke2.Text = company ActiveDocument.Bookmarks.Add Name:="Beauftragung", Range:=Marke2End If '------Reisekosten------
    28. If reisekosten_ja.Visible = True Then If reisekosten_ja.Value = False Then ActiveDocument.Bookmarks("Reisekosten1").Range.Font.Hidden = False ActiveDocument.Bookmarks("Reisekosten2").Range.Font.Hidden = False Else ActiveDocument.Bookmarks("Reisekosten1").Range.Font.Hidden = True ActiveDocument.Bookmarks("Reisekosten2").Range.Font.Hidden = True End IfEnd If
    29. '------Zahlungsziel ausfüllen------
    30. ActiveDocument.Bookmarks("modell2").Range.Font.Hidden = False
    31. Dim zahlungsziel As String
    32. If vierzehntage_auswahl.Value = True Then zahlungsziel = "vierzehntägigem"End IfIf dreissigtage_auswahl.Value = True Then zahlungsziel = "dreißigtägigem"End IfIf sechzigtage_auswahl.Value = True Then zahlungsziel = "sechzigtägigem"End IfIf neunzigtage_auswahl.Value = True Then zahlungsziel = "neunzigtägigem"End If
    33. '------Wahl des Abrechnungsmodells------
    34. account = abrechnungsmodell_auswahl.Text Select Case account Case "..." If ActiveDocument.Bookmarks.Exists("modell2") Then Set Marke2 = ActiveDocument.Bookmarks("modell2").Range Marke2.Text = "..." & zahlungsziel & "..." & Chr(10) Marke2.Select ActiveDocument.Bookmarks.Add Name:="modell2", Range:=Marke2 End If Case "..." If ActiveDocument.Bookmarks.Exists("modell2") Then Set Marke2 = ActiveDocument.Bookmarks("modell2").Range Marke2.Text = "..." & zahlungsziel & "..." & Chr(10) Marke2.Select ActiveDocument.Bookmarks.Add Name:="modell2", Range:=Marke2 End If (...) Selection.ClearFormatting Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.TypeBackspaceEnd Select
    35. (...)
    36. '------Teilnahmeantrag------If teilnahmeantrag_auswahl.Visible = True ThenIf teilnahmeantrag_auswahl.Value = True Then ActiveDocument.Bookmarks("kalkulation").Range.ListFormat.RemoveNumbers ActiveDocument.Bookmarks("kalkulation").Select Selection.Delete Unit:=wdCharacter, Count:=1 Selection.TypeBackspace ActiveDocument.Bookmarks("kostenschätzung").Range.Font.Hidden = TrueEnd IfEnd If
    37. '------Ende------ Unload Me
    38. Selection.HomeKey Unit:=wdStory, Extend:=wdMove
    39. End Sub
    40. Private Sub Cancel_Click() Unload MeEnd Sub
    41. Private Sub ausschreibung_ja_Click() ausschreibungstyp_label.Visible = True angebot_auswahl.Visible = True teilnahmeantrag_auswahl.Visible = True vierzehntage_auswahl.Value = False ActiveDocument.Bookmarks("vertragsbedingungen").Range.Font.Hidden = False If teilnahmeantrag_auswahl.Value = True Then normen_label.Visible = False normen_auswahl.Visible = False vierzehntage_auswahl.Visible = False dreissigtage_auswahl.Visible = False sechzigtage_auswahl.Visible = False neunzigtage_auswahl.Visible = False zahlungsziel_label.Visible = False abrechnungsmodell_label.Visible = False abrechnungsmodell_auswahl.Visible = False reisekosten_label.Visible = False reisekosten_ja.Visible = False reisekosten_nein.Visible = False End IfEnd SubPrivate Sub ausschreibung_nein_Click() ausschreibungstyp_label.Visible = False angebot_auswahl.Visible = False teilnahmeantrag_auswahl.Visible = False vierzehntage_auswahl.Value = True ActiveDocument.Bookmarks("vertragsbedingungen").Range.Font.Hidden = TrueIf teilnahmeantrag_auswahl.Value = True Then normen_label.Visible = True normen_auswahl.Visible = True vierzehntage_auswahl.Visible = True dreissigtage_auswahl.Visible = True sechzigtage_auswahl.Visible = True neunzigtage_auswahl.Visible = True zahlungsziel_label.Visible = True abrechnungsmodell_label.Visible = True abrechnungsmodell_auswahl.Visible = True reisekosten_label.Visible = True reisekosten_ja.Visible = True reisekosten_nein.Visible = TrueEnd IfEnd Sub
    42. Private Sub teilnahmeantrag_auswahl_Click() MsgBox "..." normen_label.Visible = False normen_auswahl.Visible = False vierzehntage_auswahl.Visible = False dreissigtage_auswahl.Visible = False sechzigtage_auswahl.Visible = False neunzigtage_auswahl.Visible = False zahlungsziel_label.Visible = False abrechnungsmodell_label.Visible = False abrechnungsmodell_auswahl.Visible = False reisekosten_label.Visible = False reisekosten_ja.Visible = False reisekosten_nein.Visible = FalseEnd Sub'Es handelt sich um ein AngebotPrivate Sub angebot_auswahl_Click() normen_label.Visible = True normen_auswahl.Visible = True vierzehntage_auswahl.Visible = True dreissigtage_auswahl.Visible = True sechzigtage_auswahl.Visible = True neunzigtage_auswahl.Visible = True zahlungsziel_label.Visible = True abrechnungsmodell_label.Visible = True abrechnungsmodell_auswahl.Visible = TrueEnd Sub
    43. Private Sub abrechnungsmodell_auswahl_Click()If abrechnungsmodell_auswahl.Value = "Monatlich (Festpreis)" Or abrechnungsmodell_auswahl.Value = "Projektende (Festpreis)" Then reisekosten_label.Visible = False reisekosten_ja.Visible = False reisekosten_nein.Visible = FalseElse reisekosten_label.Visible = True reisekosten_ja.Visible = True reisekosten_nein.Visible = TrueEnd IfEnd Sub
    44. Private Sub UserForm_Initialize()Dim Excel As ObjectSet Excel = CreateObject("Excel.Application")Excel.Workbooks.Open ("...")Excel.Application.Visible = FalseIf ActiveDocument.Bookmarks("kalkulation").Range.Font.Hidden = True Then (...) .AddItem Excel.Worksheets("Normen").Range("A20").Value End With