Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Per DAO Datenbankinhalt von Access in Listenfeld
zurück: Dokumentenschutz im Makro und Dokument aus Vorlage mit Makro weiter: Speichernamen - Festlegen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
stef4n
Office-VBA-Programmierer


Verfasst am:
11. Mai 2006, 15:59
Rufname:
Wohnort: Röhrnbach

Per DAO Datenbankinhalt von Access in Listenfeld - Per DAO Datenbankinhalt von Access in Listenfeld

Nach oben
       

Hallo Zusammen,

ich hätt da wiedermal ein etwas größeres Anliegen - dementsprechend fällt mein Problem aus. (Meiner Ansicht nach ;) )

Word 97

Ich habe ein Dokument mit 3 Textmarken

- Lieferant
- Straße
- Ort

Das Ziel ist es diese 3 Textmarken zu befüllen.

Eigentl. sollte es so funktionieren:

Ein Anwender öffnet die Word-Datei. Der Code in der AutoNew öffnet mir eine Datenbank in der obige Felder samt Datensätze enthalten sind.

Nun soll mir Word aufgrund der vorhandenen Datensätze ein Listenfeld produzieren mit dem Inhalt "Lieferant", so dass der Anwender den Lieferanten auswählen kann.

Anschl. befüllung der Textmarken anhand ausgewähltem "Lieferant".

Nun zu meinem Problem:

Code stammt von hier: http://mypage.bluewin.ch/reprobst/WordFAQ/FFDDExt.htm

Code:

'*** Beginn des anpassbaren Teiles
Private Const Pfad = "R:\Winword\Lieferantendatenbank\lieferanten.mdb" 'Pfad & Name der Datenbank
Private Const Tabelle = "adressliste"  'Name der Tabelle in der Access Datenbank
Private Const Sortieren = 0           '0 = Die Listen werden nicht sortiert
                                      '1 = Die Listen werden sortiert
'*** Ende des anpassbaren Teiles

'*** Diese Routine benötigt einen Verweis auf die MS DAO Objektbibliothek
Private db As DAO.Database
Private rs As DAO.Recordset
'*** Im VBA Editor Extras - Verweise...

Private Eintrag As Variant
Private Fehler As Integer
Private strFehler As String

Sub AutoNew()
  If Dir(Pfad) = "" Then
    strT = "Fehler beim Laden der Dropdown-Formularfelder. "
    strT = strT & "Die Datenbank " & Pfad & " ist nicht vorhanden."
    MsgBox strT, vbOKOnly + vbCritical
    Exit Sub
  End If
  On Error Resume Next
  Set db = OpenDatabase(Name:=Pfad, ReadOnly:=True)
  Fehler = Err.Number
  strFehler = Err.Description
  On Error GoTo 0
  If Fehler > 0 Then rc = 32 Else rc = 0
  If rc = 0 Then
    Dim FF As FormField
    For Each FF In ActiveDocument.FormFields
      If FF.DropDown.Valid Then
        rc = KategorieImportieren(FF.Name)
        If rc > 4 Then Exit For
        If rc = 0 Then
          With FF.DropDown.ListEntries
            .Clear
            For i = 1 To UBound(Eintrag)
              .Add Eintrag(i)
            Next i
          End With
        End If
      End If
    Next
  End If
  Select Case rc
    Case 16
      sT = "Fehler beim Zugriff auf die Tabelle mit der Bezeichnung "
      sT = sT & Tabelle & " ." & vbCr & "Code: " & Fehler & vbCr & strFehler
      MsgBox sT, vbOKOnly + vbCritical
    Case 32
      sT = "Fehler beim Öffnen der Datenbank mit der Bezeichnung "
      sT = sT & Pfad & " ." & vbCr & "Code: " & Fehler & vbCr & strFehler
      MsgBox sT, vbOKOnly + vbCritical
  End Select
  If Not rs Is Nothing Then rs.Close
  If Not db Is Nothing Then db.Close
  Set rs = Nothing
  Set db = Nothing
End Sub

Private Function KategorieImportieren(ByVal Kat As String) As Integer
  On Error Resume Next
  chk = db.TableDefs(Tabelle)
  Fehler = Err.Number
  strFehler = Err.Description
  If Fehler > 0 Then
    KategorieImportieren = 16
    Exit Function
  End If
  Err.Clear
  chk = db.TableDefs(Tabelle).Fields(Kat).Name
  Fehler = Err.Number
  strFehler = Err.Description
  On Error GoTo 0
  If Fehler = 3265 Then 'Dies Kategorie ist nicht referenziert
    KategorieImportieren = 4
    Exit Function
  End If
  If Fehler > 0 Then
    KategorieImportieren = 16
    Exit Function
  End If
  On Error Resume Next
  Set rs = db.OpenRecordset(Name:=Tabelle)
  Fehler = Err.Number
  strFehler = Err.Description
  On Error GoTo 0
  If Fehler > 0 Then
    KategorieImportieren = 16
    Exit Function
  End If
  i = 0
  ReDim Eintrag(0)
  Do While Not rs.EOF And i < 25     tmp = rs.Fields(Kat)     If Not tmp = "" Then       i = i + 1       ReDim Preserve Eintrag(i)       Eintrag(i) = tmp     End If     rs.MoveNext   Loop   If Sortieren = 1 And i > 1 Then WordBasic.SortArray Eintrag()
End Function


Das ganze habe ich, wie auf der Page beschrieben in ein Modul mit der Bezeichnung "AutoNew" gepackt, so dass es beim öffnen der Datei ausgeführt wird. Er lädt zwar, macht aber nix Sad

!!! Es kommt keine Fehlermeldung !!!

Wer kann mir weiterhelfen?

Besten Dank

Gruß
Stefan
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
18. Mai 2006, 23:22
Rufname:
Wohnort: Leipzig


AW: Per DAO Datenbankinhalt von Access in Listenfeld - AW: Per DAO Datenbankinhalt von Access in Listenfeld

Nach oben
       

Hallo Stefan,

springt die Prozedur AutoNew denn an? Das lässt sich ja einfach testen mit einer MsgBox als 1. Zeile.
Damit das Dropdown im Dokument selbst funktioniert, muss auch der Formularschutz eingeschaltet werden? Das sehe ich in der Prozedur bis jetzt noch nicht.
Falls das Dokument vorher schon geschützt ist, könnte das auch die Ursache sein. Denn dann steht ein Großteil der Funktionen nicht zur Verfügung. Man müsste also vorher den Formularschutz ausschalten, sonst läuft vermutlich gar nichts.
Code:
If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
    ActiveDocument.Unprotect
End If

_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!
stef4n
Office-VBA-Programmierer


Verfasst am:
19. Mai 2006, 10:54
Rufname:
Wohnort: Röhrnbach

AW: Per DAO Datenbankinhalt von Access in Listenfeld - AW: Per DAO Datenbankinhalt von Access in Listenfeld

Nach oben
       

Prozedur wird gestartet! Formularschutz ist keiner aktiv!
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
19. Mai 2006, 11:15
Rufname:
Wohnort: Leipzig


AW: Per DAO Datenbankinhalt von Access in Listenfeld - AW: Per DAO Datenbankinhalt von Access in Listenfeld

Nach oben
       

Hallo Stefan,

aha, dann sollte auf jeden Fall am Ende der Prozedur der Formularschutz eingeschaltet werden, damit die Dropdowns funktionieren.
Die Dropdown-Formularfelder sind in Word etwas eigen. Solange kein Formularschutz besteht, sieht man sie nicht.

Was mir besser gefällt, sind die "normalen" Dropdown-Felder auf einer Userform. Dort könnte man alle Angaben dem User zur Auswahl überlassen. Wenn er alles ausgewählt hat, lässt man die sauber erhaltenen Ergebnisse an Textmarken im Dokument einfügen. Dann braucht man auch keinen Formularschutz, sondern hat ein ganz normales Dokument.
Die Userform wird im AutoNew der Dokumentvorlage aufgerufen, wird im Initialize-Ereignis mit den Inhalten aus der Datenbank gefüllt und die Ergebnisse dann eben ins Dokument in die Textmarken gefüllt.

Hier kannst du das mal nachlesen:

Aus Word auf andere Anwendungen zugreifen

_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Word Formate: Überschrift per Schnellbausteine->Feld funktioniert nicht 1 FrauGruener 290 11. März 2013, 19:12
G.O.Tuhls Überschrift per Schnellbausteine->Feld funktioniert nicht
Keine neuen Beiträge Word Serienbriefe: Word Dokument per Klick auf Button per mail versenden 3 lexi3112 2274 19. Dez 2012, 16:27
Alex3112 Word Dokument per Klick auf Button per mail versenden
Keine neuen Beiträge Word Serienbriefe: Excel-Tabelle per Serienbrief dynamisch in Word 0 Panix 1220 05. Jul 2011, 12:55
Panix Excel-Tabelle per Serienbrief dynamisch in Word
Keine neuen Beiträge Word Serienbriefe: Textmarken per Includetext einfügen in Abhängigkeit von ASK 0 Robotixx 1805 13. Jul 2009, 19:45
Robotixx Textmarken per Includetext einfügen in Abhängigkeit von ASK
Keine neuen Beiträge Word Serienbriefe: .mdb per e-mail 2 schokomo 1000 17. Apr 2009, 09:20
Gast .mdb per e-mail
Keine neuen Beiträge Word Serienbriefe: Serienbrief per Mail versenden 1 Gast 4236 26. Nov 2008, 20:45
KaDan Serienbrief per Mail versenden
Keine neuen Beiträge Word Formate: Per Tab zu den nächsttieferen Aufzählungszeichen? 2 TobsD 2809 10. Nov 2008, 11:56
Fuchsla Per Tab zu den nächsttieferen Aufzählungszeichen?
Keine neuen Beiträge Word Serienbriefe: Sehr geehrte / Sehr geehrter per IF Funktion einbinden 1 GambleMate 2714 27. Jun 2007, 21:15
jawahnsinn Sehr geehrte / Sehr geehrter per IF Funktion einbinden
Keine neuen Beiträge Word Formate: 5 Vorgegebene Schriftarten per Zufallsprinzip wählen. 0 searcher1900 796 26. Feb 2007, 15:10
searcher1900 5 Vorgegebene Schriftarten per Zufallsprinzip wählen.
Keine neuen Beiträge Word VBA Programmierung (Makros): Formatvorlage per Menü auswählen 4 StephanHH 1102 08. Jul 2005, 16:09
StephanHH Formatvorlage per Menü auswählen
Keine neuen Beiträge Word VBA Programmierung (Makros): W2k - Auswählbaren Text per VBA (Makro) einfügen 1 AnniLux 808 30. Jun 2005, 16:38
rita2008 W2k - Auswählbaren Text per VBA (Makro) einfügen
Keine neuen Beiträge Word VBA Programmierung (Makros): makro per makro installieren 1 jou 2009 17. Jun 2005, 16:43
rita2008 makro per makro installieren
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Word VBA