Avatar billede h_s Forsker
16. november 2008 - 11:51 Der er 12 kommentarer og
1 løsning

Flytte ark til ny projektmappe med formler

Jeg har haft et spørgsmål, som jeg ikke har fået gjort færdig:
http://www.eksperten.dk/spm/833234

Da det er lag tid siden, prøver jeg her at starte det op igen...

Fra projektmappe Skat1.xls vil jeg gerne kunne kopier Ark(Årsopgørelse) fra projektmappe Stamdata.xls.

I arket bruges der nogle værdier, der står i et andet ark i Stamdata.xls. Det samme ark findes i Skat1.xls. Efter kopieringen, skal der refereres til Skat1.xls!
Avatar billede mrkr Juniormester
16. november 2008 - 16:20 #1
Prøve denne kode:


Sub importer_data()
If MsgBox("Er du sikker på at du vil importere data?", vbOKCancel, "Advarsel!") = vbCancel Then Exit Sub

    Application.EnableEvents = False
    On Error Resume Next

    Dim wb As Workbook
    Set wb = Workbooks.Open("C:\DOKUMENTER\Stamdata.xls", True, True) ' RET SELV STIEN TIL
    Application.StatusBar = "Importerer data"

    With ThisWorkbook.Worksheets("Årsopgørelse")
        .Range("A1:Q100").Formula = wb.Worksheets("Årsopgørelse").Range("A1:Q100").Formula ' RET SELV OMRÅDET TIL
    End With

    wb.Close False
    Set wb = Nothing
    Application.ScreenUpdating = True

    Application.EnableEvents = True
    Application.StatusBar = "Importen er færdig!"

    MsgBox "Importen er færdig!"
    Application.StatusBar = ""
End Sub
Avatar billede h_s Forsker
17. november 2008 - 16:45 #2
Der bliver ikke kopieret noget over i projektmappen, som makroen køres fra. Projektmappen hedder Skat.xls. Jeg går ud fra at det burde dette stykke program gøre:

With ThisWorkbook.Worksheets("Årsopgørelse")
        .Range("A1:Q100").Formula = wb.Worksheets("Årsopgørelse").Range("A1:Q100").Formula ' RET SELV OMRÅDET TIL
    End With
Avatar billede mrkr Juniormester
17. november 2008 - 18:36 #3
mærkeligt. Den virker hos mig.
Jeg har antaget følgende:
A. Der er et ark der hedder Årsopgørelse i begge filer.
B. Det er de data /formler der står i ark årsopgørelser der skal flyttes.

Prøv følgende:
1.
SLET DENNE LINJE:
On Error Resume Next

2.
SØRG FOR AT DET ER DEN HELT RIGTIGE STI DER STÅR I KODEN I FORHOLD TIL HVOR DIN FIL LIGGER
Set wb = Workbooks.Open("C:\DOKUMENTER\Stamdata.xls", True, True)
Avatar billede mrkr Juniormester
17. november 2008 - 18:37 #4
Hvis det er dataene fra stam der skal kopieres skal du ændre ("årsopgørelse") til ("stam")
Avatar billede h_s Forsker
17. november 2008 - 18:41 #5
Jeg tror jeg har fundet fejlen.
Der er ikke et ark der hedder Årsopgørelse i skat.xls i forvejen. Det skal også oprettes. Kan du putte det ind i makroen?
Avatar billede h_s Forsker
17. november 2008 - 18:49 #6
Det er fejlen :-)
Det kunne også være dejligt med lidt kommentarer - der er en del udtryk jeg ikke har set før - Det kan jeg fo lære af...
Avatar billede mrkr Juniormester
17. november 2008 - 19:40 #7
prøve denne:

Sub importer_data()
If MsgBox("Er du sikker på at du vil importere data?", vbOKCancel, "Advarsel!") = vbCancel Then Exit Sub

    Application.EnableEvents = False            ' sørger for at andre makroer ikke køres imens importen køres
    On Error Resume Next                        ' hvis der er fejl fortsætter koden uden at komme med en "debug"

    Sheets.Add                                  ' indsæt ark med navnet årsopgørelse
    ActiveSheet.Name = "årsopgørelse"
   
    Dim wb As Workbook                          ' sætter den udpegede fil til at være "wb"
    Set wb = Workbooks.Open("C:\DOKUMENTER\Stamdata.xls", True, True) ' RET SELV STIEN TIL
    Application.StatusBar = "Importerer data"  ' skriver nederst på skærmen hvad der sker

    With ThisWorkbook.Worksheets("Årsopgørelse") '
        .Range("A1:Q100").Formula = wb.Worksheets("Årsopgørelse").Range("A1:Q100").Formula ' RET SELV OMRÅDET TIL
    End With

    wb.Close False                              'lukker filen der imprteres fra
    Set wb = Nothing
    Application.ScreenUpdating = True          'opdaterer skærmen igen

    Application.EnableEvents = True            'sørger for at andre makroer kan køre igen
    Application.StatusBar = "Importen er færdig!"

    MsgBox "Importen er færdig!"
    Application.StatusBar = ""
End Sub
Avatar billede mrkr Juniormester
17. november 2008 - 19:41 #8
det er ikke sikkert at du skal have disse linjer med:
Application.EnableEvents = False
Application.EnableEvents = true

De sikrer blot at der ikke køres andre makroer imens denne kører.
Avatar billede mrkr Juniormester
17. november 2008 - 22:57 #9
Du får lige et svar :-)
Avatar billede h_s Forsker
19. november 2008 - 16:08 #10
mrkr> Tak for hjælpen!
Lige et lille tillægsspørgsmål: Hvordan får jeg Arket placeret mellem du bestemte ark. Er det navn eller placering der bestemmer det?
Avatar billede mrkr Juniormester
19. november 2008 - 16:52 #11
Det sidste forstår jeg ikke lige.
Kan du evt. uddybe lidt?
Avatar billede h_s Forsker
19. november 2008 - 17:06 #12
Et eksempel:

Jeg har i forvejen 3 ark i min projektmappe:

1. ark = Ark1
2. ark = Ark2
3. ark = ARk3

Det nye ark, Årsopgørelse kommer til at ligge som det første:

1. ark = Årsopgørelse
2. ark = Ark1
3. ark = Ark2
4. ark = Ark3

Jeg vil gerne have det ind som nummer 2:

1. ark = Ark1
2. ark = Årsopgørelse
3. ark = Ark2
4. ark = Ark3
Avatar billede mrkr Juniormester
19. november 2008 - 17:27 #13
Prøv denne:

Sub importer_data()
If MsgBox("Er du sikker på at du vil importere data?", vbOKCancel, "Advarsel!") = vbCancel Then Exit Sub

    Application.EnableEvents = False            ' sørger for at andre makroer ikke køres imens importen køres
    On Error Resume Next                        ' hvis der er fejl fortsætter koden uden at komme med en "debug"

    Sheets.Add                                  ' indsæt ark med navnet årsopgørelse
    ActiveSheet.Name = "årsopgørelse"
    Sheets("Årsopgørelse").Move After:=Sheets(2)
   
    Dim wb As Workbook                          ' sætter den udpegede fil til at være "wb"
    Set wb = Workbooks.Open("C:\DOKUMENTER\Stamdata.xls", True, True) ' RET SELV STIEN TIL
    Application.StatusBar = "Importerer data"  ' skriver nederst på skærmen hvad der sker

    With ThisWorkbook.Worksheets("Årsopgørelse") '
        .Range("A1:Q100").Formula = wb.Worksheets("Årsopgørelse").Range("A1:Q100").Formula ' RET SELV OMRÅDET TIL
    End With

    wb.Close False                              'lukker filen der imprteres fra
    Set wb = Nothing
    Application.ScreenUpdating = True          'opdaterer skærmen igen

    Application.EnableEvents = True            'sørger for at andre makroer kan køre igen
    Application.StatusBar = "Importen er færdig!"

    MsgBox "Importen er færdig!"
    Application.StatusBar = ""
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