Avatar billede brianmilan Juniormester
03. december 2007 - 10:49 Der er 21 kommentarer og
1 løsning

Hente data fra eksterne XLS fil.

Hej eksperter,

Ved I hvordan jeg kan hente data (2 forskellige kolonner) fra en ekstern XLS fil over i mit eksiterende XLS fil, og så jeg samtidig kan få de hentede data ind i en dropdownliste?

Venlig hilsen Brian
Avatar billede jlemming Nybegynder
03. december 2007 - 13:33 #1
Denne kode kan hente data i anden fil, med du bliver nød til at have en knap til opdatering. Vi mangler at få at vide hvilke koloner til og fra ?

Filename = InputBox("Indtast filnavn:", "Filnavn", "test.xls")
Set ws2 = ActiveSheet
Set wb1 = Workbooks.Open(Filename)
ws2.Range("A2:A26").Value = wb1.Sheets(1).Range("A2:A26").Value


wb1.Close savechanges:=False
Avatar billede brianmilan Juniormester
03. december 2007 - 13:44 #2
Hej, det er kolonne 1 (Sags.nr.) og kolonne 5 (Kundenavn) Tror du at man kan bruge kommandoerne GotFocus eller LostFocus for at opdatere?
Avatar billede jlemming Nybegynder
03. december 2007 - 13:47 #3
række til/fra ?,

ang. gotfocus/lost prøver jeg dem sidste uden jeg kunne få det til at virker, men prøver lige igen
Avatar billede brianmilan Juniormester
03. december 2007 - 13:50 #4
Ups, det glemte jeg det er fra række 2 til 123, i række 1 står overskrifterne.
Avatar billede jlemming Nybegynder
03. december 2007 - 14:01 #5
Du har ret gotfocus virker !!

Du skal nok ændre placering og filnavn


Private Sub ListBox1_GotFocus()
    'Filename = InputBox("Indtast filnavn:", "Filnavn", "test.xls")
    Application.ScreenUpdating = False
    Filename = "test.xls"
    Set ws2 = ActiveSheet
    Set wb1 = Workbooks.Open(Filename)
    ws2.Range("A2:A123").Value = wb1.Sheets(1).Range("A2:A123").Value
    ws2.Range("E2:E123").Value = wb1.Sheets(1).Range("E2:E123").Value
    wb1.Close savechanges:=False
    Application.ScreenUpdating = True
End Sub
Avatar billede jlemming Nybegynder
03. december 2007 - 14:15 #6
lidt forbedret


Private Sub ListBox1_GotFocus()

    on error goto fejl
    'Filename = InputBox("Indtast filnavn:", "Filnavn", "test.xls")
    Application.ScreenUpdating = False
    Filename = "test.xls"
    Set ws2 = ActiveSheet
    Set wb1 = Workbooks.Open(Filename)
    ws2.Range("A2:A123").Value = wb1.Sheets(1).Range("A2:A123").Value
    ws2.Range("E2:E123").Value = wb1.Sheets(1).Range("E2:E123").Value
    wb1.Close savechanges:=False
    Application.ScreenUpdating = True
    Exit Sub
fejl:
    MsgBox ("Liste kunne ikke opdateres")
end sub
Avatar billede brianmilan Juniormester
03. december 2007 - 14:23 #7
Tak :-)  nu kan jeg få datene over, jeg prøver lige at se om jeg kan få sags.nr. og kundenavn ind i en dropdownlise med "Datavalidering"
Avatar billede jlemming Nybegynder
03. december 2007 - 14:28 #8
hvis du vil bruge datavalidering, kan vi opdatere dine lister hvergang filen åbenes, hvis det er fint nok?
Avatar billede brianmilan Juniormester
03. december 2007 - 14:30 #9
Det lyder kanont, men tror du at det kunne lade sig gøre, at listen blev opdateret hver gang at man går han på cellen hvor dropdownlisten kommer frem?
Avatar billede brianmilan Juniormester
03. december 2007 - 14:44 #10
F.eks. at hvis der er nogle kunder der starter med DO kan man så få den til at opdatere dropdownlisten så den kun viser alle de kunder der starter med DO når man har skrevet DO i den celle der har GotFocus
Avatar billede jlemming Nybegynder
03. december 2007 - 14:58 #11
jooo, men så er du nød til at have skrevet DO i en anden end der hvor du har din validations liste
Avatar billede brianmilan Juniormester
03. december 2007 - 15:05 #12
Ok på den måde :-)  så jeg skriver f.eks. DO i den første celle og hopper over i den anden celle med GotFocus hvor den så vil opdatere alle kunder der starter med DO... Pyyha den driller...
Avatar billede jlemming Nybegynder
03. december 2007 - 15:39 #13
jeg er ved at kigge på det, bliver nok ikke færdig før i aften
Avatar billede brianmilan Juniormester
03. december 2007 - 18:45 #14
Tusinde tak
Avatar billede jlemming Nybegynder
03. december 2007 - 22:34 #15
Prøv dette:

hvis celle L1 bliver markeret, opdatere listen, udfra det der står til i cellen til venstre (K1), altså K1 =a ---> alpha,alfred,anders i M1:M123, hvis K1 er tom vælges alle


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim celle As String
If Not Intersect(Target, Range("L1")) Is Nothing Then
  Application.ScreenUpdating = False
   
    Filename = "test.xls"
    Set ws2 = ActiveSheet.Range("M1")
    Set wb1 = Workbooks.Open(Filename)
    num = Len(Target.Offset(0, -1).Value)
    t = 0
    For Each c In wb1.Sheets("sheet1").Range("A2:A123")
        If Target.Offset(0, -1).Value = Left(c.Value, num) Then
            ws2.Offset(t, 0) = c
            t = t + 1
        End If
    Next c
    For i = t To 123
      ws2.Offset(i, 0) = ""
    Next i
    wb1.Close savechanges:=False
    Application.ScreenUpdating = True
   
    Exit Sub
fejl:
    MsgBox ("Liste kunne ikke opdateres")
    End If
End Sub
Avatar billede jlemming Nybegynder
04. december 2007 - 08:12 #16
forbehold for store og små bogstaver

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim celle As String
If Not Intersect(Target, Range("L1")) Is Nothing Then
  Application.ScreenUpdating = False
   
    Filename = "test.xls"
    Set ws2 = ActiveSheet.Range("M1")
    Set wb1 = Workbooks.Open(Filename)
    num = Len(Target.Offset(0, -1).Value)
    t = 0
    For Each c In wb1.Sheets("sheet1").Range("A2:A123")
        If UCase(Target.Offset(0, -1).Value) = UCase(Left(c.Value, num)) Then
            ws2.Offset(t, 0) = c
            t = t + 1
        End If
    Next c
    For i = t To 123
      ws2.Offset(i, 0) = ""
    Next i
    wb1.Close savechanges:=False
    Application.ScreenUpdating = True
   
    Exit Sub
fejl:
    MsgBox ("Liste kunne ikke opdateres")
    End If
End Sub
Avatar billede brianmilan Juniormester
04. december 2007 - 08:13 #17
Hej,  mange tak :-) Når jeg sætter koden ind i et nyt modul og skal køre det kommer det op med et vindue hvor jeg kan lave en ny makro, ved ud hvad det kan være?
Avatar billede jlemming Nybegynder
04. december 2007 - 08:39 #18
neeej, ikke helt. men,
koden skal ligge på et af arkene
Avatar billede brianmilan Juniormester
04. december 2007 - 11:32 #19
Nu virker det, mange tak for hjælpen :-)
Kunne jeg få dig til at lægge et svar, så vil jeg give dig point.
Avatar billede jlemming Nybegynder
04. december 2007 - 11:42 #20
Det kan du sagtens, no problemos :o)
Avatar billede brianmilan Juniormester
04. december 2007 - 12:31 #21
Tak
Avatar billede brianmilan Juniormester
06. december 2007 - 09:00 #22
Hej igen :-)  Jeg kom til at tænke på om man kan sortere de data som jeg får over i min dropdown-liste så de står i alfabetisk rækkefølge?
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