Avatar billede hleschly Nybegynder
09. april 2009 - 13:17 Der er 8 kommentarer og
1 løsning

Import af data fra et andet regneark

Hej Eksperten.

Jeg sidder og fumler lidt at lave nogle automatisk time reg., jeg er bare løbet ind i et problem.

Jeg skal impoter data fra et regneark(mandskab-???.xls fil, (???=eks apr)) til et andet løndseddel.xls, kender godt til data->import men den dur ikke helt, jeg tror at jeg skal bruge en macro til det istedet.
Så jeg får en Pupop eller noget ligene hvor jeg kan vælge stien til den fil og så trykke på kopier/impotere
og så skal den slette i løndseddel.xls!udkald-timer og dernæst, kopier alle data fra arket "mandskab" over til arket "udkald-timer".

Filen hedder nemlig noget forskelligt fra mdr. til mdr.
Det ark fra regnearket indeholder flg. kolonner.
alarmeret, mødt, frigivet, cprnr, fornavn, efternavn, rappnr, kørtøj, opgave
og et ukendt antal rækker.

Har Excel 2002, og den lidt erfaring med macro programmering men ikke så meget.
Avatar billede supertekst Ekspert
09. april 2009 - 13:57 #1
Velkommen til..

Filerne "Mandskab???.xls" ligger de i samme folder (mappe)?
Hvis forskellen er månedsforkortelsen "jan / feb / mar/ apr" o.s.v. - så er det vel et spørgsmål om at vælge "måned".
Avatar billede hleschly Nybegynder
09. april 2009 - 14:20 #2
Hej Supertekst

Ja mandskab??.xls ligger i den samme folder på dette år altså /.../2009/mandskab-apr.xls osv. så man skulle nok kunne vælge år og mdr.
Avatar billede supertekst Ekspert
09. april 2009 - 14:55 #3
Ok - er i gang med at opbygge en model.

I princippet kan hele arket "Mandskab" kopieres over til filen lønseddel - idet det bestående ark "Udkald-timer" slettes og det kopierede omdøbes - eller ?
Avatar billede hleschly Nybegynder
09. april 2009 - 15:06 #4
nej helst ikke, da jeg har nogle formler m.m. som ligger i kolonnerne K-O, ville helst at den kun slettede/tomte kolonnerne A-J og så kopiered dem over fra mandskab. hvis det kan lade sig gøre ellers må jeg ligge formlerne på et andet ark.
Avatar billede supertekst Ekspert
09. april 2009 - 15:18 #5
Ok..
- det er intet problem..
Avatar billede supertekst Ekspert
09. april 2009 - 15:19 #6
Vender tilbage senere...
Avatar billede supertekst Ekspert
10. april 2009 - 15:07 #7
Hej igen.

Har en model klar - send en mail (adresse under min profil) så returnerer jeg hele modellen.

(Vil også blive vist her...)
Avatar billede hleschly Nybegynder
11. april 2009 - 07:13 #8
Alletiders. du har modtaget en mail, og som der også står der så må du da gerne post den her inde også så andre også kan drage nytte af dine talenter. :-)

På forhånd mange tak.
Avatar billede supertekst Ekspert
11. april 2009 - 14:06 #9
Kode i Userform:

Private Sub CommandButton1_Click()                  'Ok
    If Me.ListBox1.ListIndex <> -1 And Me.ListBox2.ListIndex <> -1 Then
        kopierMandskabsData Ark2.xsti + Me.ListBox1 + "\" + Me.ListBox2
    Else
        MsgBox ("Fil ikke udpeget!")
    End If
End Sub
Private Sub CommandButton2_Click()                  'Luk
    Unload UserForm1
End Sub
Private Sub ListBox1_Click()                        'årsMappe valgt
    Me.ListBox2.Clear
    visMandskabsMåneder Me.ListBox1
End Sub
Private Sub UserForm_activate()
    Me.ListBox1.Clear
    Me.ListBox2.Clear
   
    visÅrsMapper
End Sub
Private Sub visÅrsMapper()
    Dim fs, f, f1, fc, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(Ark2.xsti)
    Set fc = f.SubFolders
   
    For Each f1 In fc
        Me.ListBox1.AddItem f1.Name
    Next
End Sub
Private Sub visMandskabsMåneder(årsMappeNavn)
    Dim fs, f, f1, fc, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(Ark2.xsti + årsMappeNavn)
    Set fc = f.Files
    For Each f1 In fc
        Me.ListBox2.AddItem f1.Name
    Next
End Sub
Rem ============= OVERFØRSEL ===============
Private Sub kopierMandskabsData(filNavn)
Dim udkaldArk, antalRækker
Dim mdXLS, mdArk, ræk
On Error GoTo lukStatus
    Application.ScreenUpdating = False

Rem slet gl. data i rækkerne A - J
    antalRækker = ActiveCell.SpecialCells(xlLastCell).Row
    Range("A1:J" & CStr(antalRækker)).Select
    Selection.ClearContents
   
    Cells(1, 1).Select
   
    Set udkaldArk = ActiveWorkbook.Sheets("udkald-timer")
   
Rem hent data fra mandskabs-fil
    Set mdXLS = CreateObject("Excel.application")
    With mdXLS
        .Workbooks.Open filNavn
        Set mdArk = .ActiveWorkbook.Sheets("mandskab")
        mdArk.Activate
       
Rem fortsæt indtil data i A = tom
        For ræk = 1 To 65000
            If mdArk.Cells(ræk, 1) <> "" Then
                For kol = 1 To 10
                    indhold = mdArk.Cells(ræk, kol)
                    udkaldArk.Cells(ræk, kol) = indhold
                Next kol
            Else
                Exit For
            End If
        Next ræk
    End With
   
lukStatus:
    On Error Resume Next
   
    mdXLS.Application.Quit
    Set mdXLS = Nothing
   
    Application.ScreenUpdating = True
   
    MsgBox ("Mandskabs-data overført")
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation

Politiets Efterretningstjeneste

Bliv IT-supporter i PET's IT Servicedesk