Announcement

Collapse
No announcement yet.

Zugriff aus word auf Access

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff aus word auf Access

    Hallo zusammen,

    ich bin nun einigermaßen fit in Word und Excel VBA. Bei access "harzt" es noch ein wenig. Nun habe ich zu meinen Verständnisdefiziten in access VBA noch ein weiteres Problem.

    Ich würde gerne aus Word eine Verbindung zu einer access Datenbank herstellen und in einem ersten Schritt Eintragungen machen.

    Dies habe ich schon mit Excel gelöst. Problem hierbei ist, dass mehrere Personen zugreifen. Daher habe ich aktuell für jeden Anwender eine eigene Excel-Datei zur Protokollierung - funktioniert soweit gut. Anbei der Code:

    Code:
    Sub Protokoll()
    
    'Textmarkeninhalte in Excelblatt eintragen (ohne Excel-Makro)
      Dim objWbLiefer As Excel.Workbook, objwksLiefer As Excel.Worksheet
      Dim objZelle As Excel.Range
      Dim objDoc As Word.Document
      Dim strExceldatei As String
      Const strPfad As String = "R:\Qualitätssicherung\Stellungnahmen-Korrespondenz\Wlochowitz"
      strExceldatei = "Stellungnahmen " & ProtokollDatei & ".xls"
      Const strExcelBlatt As String = "Tabelle1"
      Set objDoc = ActiveDocument
      'Exceldatei öffnen
      Set objWbLiefer = Excel.Workbooks.Open(FileName:=strPfad & _
            Application.PathSeparator & strExceldatei)
      'Prüfen, ob Datei schreibgeschützt geöffnet wurde
      If objWbLiefer.ReadOnly = True Then
        MsgBox "Die Datei " & strExceldatei & " ist von anderem Anwender geöffnet!" & vbLf _
          & "Makro wird abgebrochen", vbOKOnly, "Textmarken nach " & strExceldatei
        objWbLiefer.Close
        Excel.Application.Quit
        GoTo Beenden
      End If
      
    '  Application.WindowState = wdWindowStateMinimize
    '  Excel.Application.Visible = True
      Set objwksLiefer = objWbLiefer.Worksheets(strExcelBlatt)
      'auszufüllende Zelle im Blatt Liefer suchen (nächste frei Zelle in Spalte A)
      Set objZelle = objwksLiefer.Cells(LetzteZeile(objwksLiefer, 1), 1).Offset(1, 0)
      'Zeile mit Textmarken-Inhalten auffüllen
      With objZelle
        .Value = Antwortrouting
        .Offset(0, 1).Value = "SN " & Kunr & " " & Name & " " & Name2 & " " & Date & ".doc"
      End With
      objWbLiefer.Save
      objWbLiefer.Close
    Beenden:
      Set objWbLiefer = Nothing: Set objwksLiefer = Nothing: Set objZelle = Nothing
      Set objDoc = Nothing
    End Sub
    
    Function LetzteZeile(objWks As Excel.Worksheet, lngSpalte As Long) As Long
      'Letzte Zelle mit Daten in Spalte der Tabelle
      With objWks
        If IsEmpty(.Cells(.Rows.Count, lngSpalte)) Then
          LetzteZeile = .Cells(.Rows.Count, lngSpalte).End(xlUp).Row
        Else
          LetzteZeile = .Rows.Count
        End If
      End With
    End Function
    Nun würde ich gerne das ganze erweitern, so dass im Protokoll noch bestehende Einträge gesucht werden können. Hierzu muss ich aber auf alle Protokolleinträge zugreifen. Somit habe ich wieder das Problem mit dem Zugriff.

    Mir erscheint hier als logische Lösung dies alles in Access zu machen. Hier gibt es dann ja keine Probleme, wenn mehrere gleichzeitig "lesen" und "schreiben".

    Leider habe ich aktuell keinen Schimmer wie ich auf die Access-Funktionen aus Word zugreifen kann. Sollte sich jemand die Mühe machen mich hier zu unterstützen im Voraus den besten Dank!

    Viele Grüße

    Andreas
Working...
X