Avatar billede stewen Praktikant
20. januar 2006 - 14:42 Der er 2 kommentarer og
1 løsning

VBA - Import til Array til combobox

Jeg skal importere noget data - men kun til en combobox i en formular! Jeg importerer vha ODBC

Jeg kan godt importere data til et ark, vha denne her:

    With ActiveSheet.QueryTables.Add(Connection:= _
        "ODBC;DSN=srv-accounting;UID=XX;APP=Microsoft Office 2003;WSID=XXX;DATABASE=NAVISION;Trusted_Connection=Yes" _
        , Destination:=Range("A1"))
        .CommandText = Array(sqlstr)
        .Name = "XXX"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With

men nu vil jeg have data i en combobox. Jeg skal altså importere hvordan?
Avatar billede staal84 Nybegynder
22. januar 2006 - 16:29 #1
Navngiv dit data område.

Stil dig i celle a1 - tryk ctrl+shift+pil ned (markére dine netop importerede data).
Lige over kolonne A - står teksten A1, markér denne teskt og kald den f.eks. "Data" (uden gåseøjne) Enter.
Du har nu givet din import, navnet data, dette kan du referere til i din combobox


Indsæt nedenstående (dobbelt klik på din userform, ikke din combobox!)
Så vil din combobox, når din userform vises, tage værdierne i det navngivne område "Data"

    Private Sub UserForm_Activate()
    ComboBox1.RowSource = "Data"
    End Sub

Combobox1 skal selvfølgelig ændres hvis du har givet den et andet navn.


Det kører ikke helt automatisk, men så har du lidt at starte på....
Avatar billede stewen Praktikant
24. januar 2006 - 10:46 #2
Ok, jeg har måske formuleret mig dårligt.

Jeg ønsker ikke at importerer data til et område i Excel. Jeg ønsker direkte import til min combo.

Det andet er ikke noget problem.
Avatar billede stewen Praktikant
10. februar 2006 - 14:50 #3
Nå - lukketid!

Svaret blev at jeg lavede en import vha ADO - og gjorde det i en funktion (public function) som jeg brugte i min combobox... altså sådan her:

Public Function NameImport() As String()
'Returnerer data i array

  Dim rst As ADODB.Recordset
  Dim con As ADODB.Connection
  Dim com As ADODB.Command
  Dim strName() As String
  Dim i As Integer

  'Open connection
  Set con = New ADODB.Connection
  con.ConnectionString = "DSN=min_bruger_dsn;USER=xxx;PWD="
  con.Provider = "msdasql"
  con.Open

  'Create and manipulate command object
  Set com = New ADODB.Command
  com.ActiveConnection = con
  com.CommandText = "SELECT Name FROM Company"

  'Create and populate the recordset
  Set rst = New ADODB.Recordset
  rst.Open com, , adOpenKeyset

  'Walk the recordset
  With rst
    .MoveFirst
    i = 0
    Do While Not .EOF
          ReDim Preserve strName(i)
          strName(i) = !Name
          i = i + 1
        .MoveNext
    Loop
  End With

  'Clean up
  con.Close
 
  NameImport = strName
End Function

I min formular hvor jeg har jeg denne her:

Private Sub UserForm_Initialize()

ComboBox1.List = NameImport

End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester