title image


Smiley Re: Kombinationsfeld in Word-Symbolleiste mit Accesdaten füllen
Hallo GerdSchon möglich, dass dies viele brachen können. Deshalb ist es noch lange keine Aufgabenstellung für die Kaffeepause.Hier ein lauffähiges Beispiel. Es wird allerdings auf eine Excel-Tabelle zugegriffen, weil in Access weisst Du eh besser Bescheid.Die Zeilen der Excel-Tabelle sollen Datensätze repräsentieren.Diese Datensätze sehen wie folgt aus:Chianti Toscana Siena 1998Barbaresco Piemonte Alba 1989Barolo Piemonte Alessandria 1975Nebiolo Piemonte Asti 1996Brunello Toscana Montalcino 1978Die Combobox wird also 5 Einträge haben, nämlich Chianti, Barbaresco, etc. Wählt der Benutzer einen Wein in dieser List aus, werden die korrespondierenden Daten, nämlich Region, Ortschaft und Jahrgang in das Dokument eingefügt.Der Code sieht wie folgt aus:Private Const Pfad = "C:\Eigene Dateien\Weine.xls"Private Const Ort = "Menu Bar"Private Const Bezeichnung = "Italienische Weine"Private Const BezeichnungAnzeigen = 0Private Const Breite = 4Private Const TipBeiFokus = "Wählen Sie einen Wein aus"Private xlApp As ObjectPrivate xlWkb As ObjectPrivate Wein() As StringPrivate WeinMax As DoubleSub ComboBoxAufbauen() WeinMax = 5 ReDim Wein(WeinMax) ExcelMappeConnect Set chk = CommandBars.FindControl(Type:=msoControlComboBox, Tag:="SW19990809") If TypeName(chk) "Nothing" Then chk.Delete Set oLeiste = CommandBars(Ort) With oLeiste .Protection = 0 Dim CBox As CommandBarComboBox Set CBox = .Controls.Add(Type:=msoControlComboBox, Parameter:=Bezeichnung) With CBox .Tag = "SW19990809" .Clear .Style = msoComboLabel .Enabled = True .Visible = True If BezeichnungAnzeigen = True Then .Caption = Bezeichnung .BeginGroup = True .TooltipText = TipBeiFokus .OnAction = "WeinCallback" .DropDownLines = 10 .Width = CentimetersToPoints(Breite) .DropDownWidth = CentimetersToPoints(Breite) .ListIndex = 0 For i = 1 To WeinMax .AddItem xlWkb.Sheets(1).Cells(i, 1), i Next i .ListHeaderCount = 3 End With End With HappyEndEnd SubSub WeinCallback() Set Liste = CommandBars.FindControl(Type:=msoControlComboBox, Tag:="SW19990809") ExcelMappeConnect For i = 2 To 4 Selection.TypeText Text:=xlWkb.Sheets(1).Cells(Liste.ListIndex, i) & vbCrLf Next i Liste.ListIndex = 0 HappyEndEnd SubPrivate Sub ExcelMappeConnect() Set xlWkb = GetObject(Pfad) Set xlApp = xlWkb.ParentEnd SubPrivate Sub HappyEnd() Set xlWkb = Nothing Set xlApp = NothingEnd SubDie Werte im KopfPfad = voll qualif. Name der MappeOrt = Die Combobox wird das letzte Element der Symbolleiste Menü-Leiste seinBezeichnungAnzeigen = 0 : Es wird keine Bezeichnung angezeigtErklärungen zum Code:Zuerst wird die Verbindung zur Excel Mappe geschaffenDie Combobox wird gesuchtFalls sie von früher schon besteht, wird sie gelöschtNun wird die Combobox generiert und mit einem Tag versehen.Die Combobox wird mit den Werten in der ersten Spalte der Excel-Tabelle gefülltEs wird festgelegt, welche Prozedur aufgerufen werden soll, wenn der Benutzer eine Auswahl machtDie Objekte werden vernichtet um Speicher freizugebebWenn der Benutzer was auswählt, kommt der Callback-Prozess zum ZugeIch muss herausfinden, welchen Eintrag der Benutzer ausgesucht hatDie Excel-Tabelle wird wieder ConectedDie Daten werden abgeholt (bei Excel) und in das Dokument geschriebenViel Spass!GrussSilvia*gespannt auf Access-Lösung wartendHier nochmals der genau gleiche Code ohne Formatierung:Private Const Pfad = "C:\Eigene Dateien\Weine.xls"Private Const Ort = "Menu Bar"Private Const Bezeichnung = "Italienische Weine"Private Const BezeichnungAnzeigen = 0Private Const Breite = 4Private Const TipBeiFokus = "Wählen Sie einen Wein aus"Private xlApp As ObjectPrivate xlWkb As ObjectPrivate Wein() As StringPrivate WeinMax As DoubleSub ComboBoxAufbauen() WeinMax = 5 ReDim Wein(WeinMax) ExcelMappeConnect Set chk = CommandBars.FindControl(Type:=msoControlComboBox, Tag:="SW19990809") If TypeName(chk) "Nothing" Then chk.Delete Set oLeiste = CommandBars(Ort) With oLeiste .Protection = 0 Dim CBox As CommandBarComboBox Set CBox = .Controls.Add(Type:=msoControlComboBox, Parameter:=Bezeichnung) With CBox .Tag = "SW19990809" .Clear .Style = msoComboLabel .Enabled = True .Visible = True If BezeichnungAnzeigen = True Then .Caption = Bezeichnung .BeginGroup = True .TooltipText = TipBeiFokus .OnAction = "WeinCallback" .DropDownLines = 10 .Width = CentimetersToPoints(Breite) .DropDownWidth = CentimetersToPoints(Breite) .ListIndex = 0 For i = 1 To WeinMax .AddItem xlWkb.Sheets(1).Cells(i, 1), i Next i .ListHeaderCount = 3 End With End With HappyEndEnd SubSub WeinCallback() Set Liste = CommandBars.FindControl(Type:=msoControlComboBox, Tag:="SW19990809") ExcelMappeConnect For i = 2 To 4 Selection.TypeText Text:=xlWkb.Sheets(1).Cells(Liste.ListIndex, i) & vbCrLf Next i Liste.ListIndex = 0 HappyEndEnd SubPrivate Sub ExcelMappeConnect() Set xlWkb = GetObject(Pfad) Set xlApp = xlWkb.ParentEnd SubPrivate Sub HappyEnd() Set xlWkb = Nothing Set xlApp = NothingEnd Sub

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: