Thema Datum  Von Nutzer Rating
Antwort
14.05.2019 19:08:35 Hady
NotSolved
15.05.2019 08:45:12 Gast9953
NotSolved
15.05.2019 10:02:30 Hady
NotSolved
Blau Excel-Word
15.05.2019 16:00:15 Gast9953
NotSolved
15.05.2019 16:04:29 Hady
Solved

Ansicht des Beitrags:
Von:
Gast9953
Datum:
15.05.2019 16:00:15
Views:
442
Rating: Antwort:
  Ja
Thema:
Excel-Word

Keine Ahnung warum ein Dropdown, ist halt deine Masche

Das Element aktualisierst du dann eben so

Sub Versorge()
'
' Beispiel Makro - Angaben zur Suche in den Konstanten so variabel als möglich
'
Const Adressenpfad As String = "E:\WordVBA\Beispiel.xlsx"
Const sTablename As String = "Tabelle1$"
Const Spalte As Long = 1   'A
Const Zeile As Long = 2    '= 3 da bei 0
'
Dim arr()
'
Dim oConn As Object
Dim oRS As Object
Dim sSQL As String

Dim oCC As Word.ContentControl
Dim x As Long

   
   sSQL = "SELECT * FROM " & Chr(91) & sTablename & Chr(93)
   Set oConn = CreateObject("ADODB.Connection")
   Set oRS = CreateObject("ADODB.Recordset")
   With oConn
      .Provider = "Microsoft.ACE.OLEDB.12.0"
      .ConnectionString = "Data Source=" & Adressenpfad & ";" & _
      "Extended Properties=""Excel 12.0 Xml;HDR=NO;IMEX=1"""
      .Open
   End With

   oRS.Open sSQL, oConn ', 3, 1, 1
   If Not oRS.EOF Then
      arr = oRS.GetRows
   End If
   
   With ActiveDocument
      Set oCC = .ContentControls(1)
      With oCC
         .DropdownListEntries.Clear
         For x = LBound(arr, 2) + Zeile To UBound(arr, 2)
            .DropdownListEntries.Add arr(Spalte - 1, x)
         Next x
      End With
   End With

Set oConn = Nothing
Set oRS = Nothing

End Sub

Die Auswahl in die Zwischenablage dann so

Sub ViaDrop()
'
' Beispiel Makro - Angaben zur Suche in den Konstanten so variabel als möglich
'
Const Adressenpfad As String = "E:\WordVBA\Beispiel.xlsx"
Const sTablename As String = "Tabelle1$"
Const Spalte As Long = 1
'
Dim strInput As Variant
'
Dim oConn As Object
Dim oRS As Object
Dim sSQL As String
Dim sField As String
Dim sFilter As String
'
Dim oData As New DataObject
Dim sText As String
'
Dim oCC As Word.ContentControl
Dim x As Long

   With ActiveDocument
      Set oCC = .ContentControls(1)
      With oCC
         strInput = .Range.Text
      End With
   End With
   
   sSQL = "SELECT * FROM " & Chr(91) & sTablename & Chr(93)
   Set oConn = CreateObject("ADODB.Connection")
   Set oRS = CreateObject("ADODB.Recordset")
   With oConn
      .Provider = "Microsoft.ACE.OLEDB.12.0"
      .ConnectionString = "Data Source=" & Adressenpfad & ";" & _
      "Extended Properties=""Excel 12.0 Xml;HDR=NO;IMEX=1"""
      .Open
   End With

   oRS.Open sSQL, oConn ', 3, 1, 1
   If Not oRS.EOF Then
      sField = "F" & Format(Spalte, "#")
      sFilter = sField & " = " & Chr(39) & strInput & Chr(39)
      oRS.Filter = sFilter
      
      If Not oRS.EOF Then
         sText = oRS.Fields(0) & vbLf & oRS.Fields(1) & vbLf & oRS.Fields(2)
         With oData
            .SetText sText
            .PutInClipboard
         End With
         MsgBox "Zwischenablage gefüllt"
      Else
         MsgBox strInput & vbLf & "nicht erkannt"
      End If
   End If

Set oConn = Nothing
Set oRS = Nothing
Set oData = Nothing
Set oCC = Nothing

End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
14.05.2019 19:08:35 Hady
NotSolved
15.05.2019 08:45:12 Gast9953
NotSolved
15.05.2019 10:02:30 Hady
NotSolved
Blau Excel-Word
15.05.2019 16:00:15 Gast9953
NotSolved
15.05.2019 16:04:29 Hady
Solved