Avatar billede ogodt Nybegynder
30. juni 2011 - 11:06 Der er 9 kommentarer og
1 løsning

Hente data fra extern fil

Hej,

jeg har følgende VBA kode fra brugeren "supertekst":

Public Sub intervalDatoPriser()
Dim a1 As Worksheet, antalRæk As Long, antalKol, ræk As Long, kol As Long
Dim A2 As Worksheet
Dim fraDato As Date, tilDato As Date, fraRæk As Long, tilRæk As Long
Dim r1 As Range, r2 As Range, r12 As Range

    Set a1 = ActiveWorkbook.Sheets("Ark1")
    Set A2 = ActiveWorkbook.Sheets("Ark2")
   
    a1.Activate
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
    antalKol = ActiveCell.SpecialCells(xlLastCell).Column
     
    fraDato = A2.Range("C2")
    tilDato = A2.Range("E2")
   
    For ræk = 2 To antalRæk
        If a1.Range("A" & ræk) = fraDato Then
            fraRæk = ræk
        Else
            If a1.Range("A" & ræk) = tilDato Then
                tilRæk = ræk
Rem Overskrift
                Set r1 = a1.Range(a1.Cells(1, 1), a1.Cells(1, antalKol))
                Set r2 = a1.Range(a1.Cells(fraRæk, 1), a1.Cells(tilRæk, antalKol))
Rem Data
                Set r12 = Application.Union(r1, r2)
                r12.Select
               
                Selection.Copy
                Exit For
            End If
        End If
    Next
     
    A2.Activate
    A2.Range("C3").Select
    A2.Paste
    A2.Range("C3").Select
   
    Application.CutCopyMode = False
End Sub

som henter data fra ARK1 til ARK2 ud fra en start og slut dato, nu vil jeg gerne have lavet den om, så den henter data fra en anden fil i samme mappe.

Nogen der kan hjælpe der ??

\Ole
Avatar billede supertekst Ekspert
30. juni 2011 - 14:01 #1
Rem Version 4
Rem =========
Public Sub intervalDatoPriser()
Dim aktuelleSti

Const prisFilNavn = "PrisFil.xlsx"          '<---------- Justeres

Dim prisXls As Object
Dim a1 As Worksheet, antalRæk As Long, antalKol, ræk As Long, kol As Long

Dim a2 As Worksheet
Dim fraDato As Date, tilDato As Date, fraRæk As Long, tilRæk As Long
Dim r1 As Range, r2 As Range, r12 As Range
    On Error GoTo lukPrisfil

Rem sæt aktuelle sti
    aktuelleSti = ThisWorkbook.Path
    If Right(aktuelleSti, 1) <> "\" Then
        aktuelleSti = aktuelleSti + "\"
    End If
   
Rem Åbn prisfil-objektet
    Set prisXls = CreateObject("Excel.Application")
    prisXls.Workbooks.Open aktuelleSti + prisFilNavn
   
    Set a1 = prisXls.ActiveWorkbook.Sheets("Ark1")
    Set a2 = ActiveWorkbook.Sheets("Ark2")
   
    antalRæk = prisXls.ActiveCell.SpecialCells(xlLastCell).Row
    antalKol = prisXls.ActiveCell.SpecialCells(xlLastCell).Column
     
    fraDato = a2.Range("C2")
    tilDato = a2.Range("E2")
   
    For ræk = 2 To antalRæk
        If a1.Range("A" & ræk) = fraDato Then
            fraRæk = ræk
        Else
            If a1.Range("A" & ræk) = tilDato Then
                tilRæk = ræk
Rem Overskrift
                Set r1 = a1.Range(a1.Cells(1, 1), a1.Cells(1, antalKol))
                Set r2 = a1.Range(a1.Cells(fraRæk, 1), a1.Cells(tilRæk, antalKol))
Rem Data
                indsætData r1, "C3"
                indsætData r2, "C4"
                Exit For
            End If
        End If
    Next ræk
     
    a1.Application.CutCopyMode = False
    Range("C4").Select
   
Rem luk prisfil-objektet
lukPrisfil:
    prisXls.Application.Quit
    Set prisXls = Nothing
End Sub
Private Sub indsætData(rr As Range, cc As String)
    rr.Select
    rr.Copy
    Range(cc).Select
    ActiveSheet.Paste
End Sub
Avatar billede ogodt Nybegynder
30. juni 2011 - 14:15 #2
igen, perfekt udført. TAKKER
Avatar billede supertekst Ekspert
30. juni 2011 - 14:40 #3
Selv tak - nu mangler der måske kun en Userform til valg af datoer?
Avatar billede ogodt Nybegynder
30. juni 2011 - 14:46 #4
tja, jeg har lavet 2 rullelister, men hvis du har en bedre måde er jeg helt klart med på en lytter :-)
Avatar billede supertekst Ekspert
30. juni 2011 - 23:23 #5
Det skulle kun være for at "afstemme" til-dato - når fra-dato er valgt.
Avatar billede ogodt Nybegynder
01. juli 2011 - 08:04 #6
jeg må indrømme jeg kan ikke "se" det for mig ??
Avatar billede supertekst Ekspert
01. juli 2011 - 08:54 #7
ok - så må du heller se det - vender tilbage..
Avatar billede supertekst Ekspert
01. juli 2011 - 11:20 #8
Hvis du sender en mail - så returnere jeg min model. @-adresse under min profil.
Avatar billede ogodt Nybegynder
01. juli 2011 - 12:54 #9
virker perfekt, jeg har lagt en commandbutton ind, som åbner Userform1.

Takker.
Avatar billede supertekst Ekspert
01. juli 2011 - 13:36 #10
Godt nok - selv tak
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
Kurser inden for grundlæggende programmering

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