VB6 Combobox in Excel einfügen und ansprechen

  • VB6

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Windsor.

    VB6 Combobox in Excel einfügen und ansprechen

    Hallo,

    ich denke aus dem Titel kann man schon rausfinden, was ich vorhabe.
    Also, aktuell füge ich in Excel Combobox'en ein, und fülle sie mit Infos aus einem MSflexgrid aus Visual Basic heraus.
    Soweit so gut.
    Nun mein Problem, wie kann ich diesen Combobox'en Click-Events hinzufügen ?

    Ich bin dankbar für jede Antwort.

    Mit freundlichen Grüssen
    Philippe
    Clicke zwie mal auf dein ComboBox dann wird automatisch Code Fenster. Im Code Fenster links in ComboBox stehen alle Erreignisse und rechts in ComboBox stehen alles Steuerelemente die du in deinem Projeckt hast.
    Datei ausführen kannst mit "Shell" oder du rufst die WIN API "ShellExcute".

    Agent hat dir schon geschrieben wie du machen solltest, am sonsten fange zuerst hier !
    Hallo,

    irgendwie reden wir aneinander vorbei. Ich versuchs nochmal von anfang an ;)

    Die Excel Datei wird von Visual Basic erstellt. Es handelt sich sozusagen um ein Export von dem MSFlexgrid.

    Im Grid ist der Pfad zu ein oder mehreren PDF Dateien. Momentan wird von Visual Basic die Excel Datei erstellt. Visual Basic fügt automatisch ein oder mehrere Combos ins Spreadsheet ein. Die Combos werden mit den Infos aus dem Grid gefüllt.

    So, nun hab ich eine schöne Excel datei mit den Combos die gefüllt sind mit den Infos aus dem Grid.

    Meine Frage lautet nun: Wie kann ich automatisch per Visual Basic ein Click Event hinzufügen, sodass bei der Auswahl eines Pfades aus der Combo, die PDF Datei geäffnent wird ?

    Danke. Hoffentlich kann mir jemand helfen.

    Mit freundlichen Grüssen

    Philippe
    Ich poste mal den bisherigen Code, dann kann man villeicht besser erkennen was ich meine

    Visual Basic-Quellcode

    1. Do While objXLWks.Cells(X, 1) <> ""
    2. If objXLWks.Cells(X, nBonLivraisonCol) <> "" Then
    3. nTop = objXLWks.Cells(X, nBonLivraisonCol).Top
    4. nLeft = objXLWks.Cells(X, nBonLivraisonCol).Left
    5. ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
    6. DisplayAsIcon:=False, Left:=nLeft, Top:=nTop, Width:=110, Height:=15) _
    7. .Select
    8. nComboNr = nComboNr + 1
    9. Do While A < Len(objXLWks.Cells(X, nBonLivraisonCol)) + 1
    10. If Mid(objXLWks.Cells(X, nBonLivraisonCol), A, 1) = "|" Then
    11. nTextDisplayNr = InStrRev(nDocName, "\")
    12. nTextDisplay = Right(nDocName, Len(nDocName) - nTextDisplayNr)
    13. ActiveSheet.OLEObjects("ComboBox" & nComboNr).Object.AddItem Right(nDocName, Len(nDocName) - InStrRev(nDocName, "\"))
    14. 'Hier werden die Infos eingefügt. Es soll auch gleich ein Click event erstellt werden
    15. nDocName = ""
    16. Else
    17. nDocName = nDocName + Mid(objXLWks.Cells(X, nBonLivraisonCol), A, 1)
    18. End If
    19. A = A + 1
    20. Loop
    21. end if
    22. X=X+1
    23. Loop


    So, also die Infos werden aus dem Flexgrid gelesen, und dann an das Spreadsheet übergeben, danach wird eine Combo erstellt, und die Infos werden eingefügt.

    Die combos werden dynamisch eingefügt, und ich möchte auch nicht im nachhinein noch in Excel die Events einfügen. Das soll gleich von Visual Basic beim export erledigt werden.
    Für den, den es interessiert. Habe die Lösung gefunden.

    Hier der Code

    Visual Basic-Quellcode

    1. Private Sub Command2_Click()
    2. On Error GoTo ErrHandler
    3. Dim objXLApp As Excel.Application
    4. Dim objXLWkb As Excel.Workbook
    5. Dim objXLWks As Excel.Worksheet
    6. Set objXLApp = CreateObject("Excel.Application")
    7. Set objXLWkb = objXLApp.Workbooks.Add
    8. Set objXLWks = objXLWkb.Worksheets(1)
    9. Dim oOLE As OLEObject
    10. Set objXLWks = ActiveSheet
    11. nTop = 100
    12. nLeft = 200
    13. nPDF1 = "C:\123.pdf"
    14. For nComboNr = 1 To 5
    15. Set oOLE = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
    16. Left:=nLeft, Top:=nTop, Width:=80, Height:=32)
    17. nTop = nTop + 10
    18. ActiveSheet.OLEObjects("ComboBox" & nComboNr).Object.AddItem nPDF1
    19. objXLWkb.VBProject.VBComponents(objXLWks.CodeName).CodeModule.InsertLines objXLWkb.VBProject.VBComponents(objXLWks.CodeName).CodeModule.CreateEventProc("Click", oOLE.Name) + 1, _
    20. vbTab & "Dim myShell as Object" & vbCrLf & _
    21. vbTab & "Set myShell = CreateObject(""WScript.Shell"")" & vbCrLf & _
    22. vbTab & "myShell.Run ComboBox" & nComboNr & ".Text"
    23. Next nComboNr
    24. Set objXLChart = Nothing
    25. Set objXLWks = Nothing
    26. Set objXLWkb = Nothing
    27. ActiveSheet.Range("A1").Select
    28. 'Excel sichtbar machen
    29. If Not objXLApp Is Nothing Then
    30. With objXLApp
    31. 'Excel sichtbar machen
    32. .Visible = True
    33. 'Dem Anwender die Kontrolle über Excel übergeben
    34. .UserControl = True
    35. End With
    36. 'Objektverweis freigeben
    37. Set objXLApp = Nothing
    38. End If
    39. Exit Sub
    40. ErrHandler:
    41. Dim Msg As String
    42. Msg = "Pour correctement utiliser les liens dans les Combo vers" & vbCr & "les documents associés, activez l'option ""Trusted Visual Basic Program"" comme suit" & vbCr & "" & vbCr & "Menu, Outils aller dans Macro et cliquer sur Sécurité" & vbCr & "dans l'onglet Sources Fiables, cocher « Faire confiance au projet Visual Basic »" & vbCr & "" & vbCr & "Refaites l'export" & vbCr & "" & vbCr & "NB: Ceci est une manipulation unique."
    43. MsgBox Msg, vbCritical Or vbOKOnly, "STOCK Export"
    44. 'MsgBox Error
    45. Resume Next
    46. 'Pour correctement utiliser les liens dans les Combo vers
    47. 'les documents associés, activez l'option "Trusted Visual Basic Program" comme suit
    48. 'Menu, Outils aller dans Macro et cliquer sur Sécurité
    49. 'dans l'onglet Sources Fiables, cocher « Faire confiance au projet Visual Basic »
    50. 'Refaites l'export
    51. 'NB: Ceci est une manipulation unique.
    52. End Sub


    Danke