Avatar billede per_thorndal Nybegynder
21. december 2005 - 15:25 Der er 7 kommentarer og
1 løsning

Kopiere regneark fra en lukket fil til et nyt / eks. regneark

Jeg har med stor fornøjelse anvendt dette svar:

http://www.eksperten.dk/spm/279147

MEN i stedet for at kopiere udvalgt data over i et nyt regneark, så vil jeg gerne kopiere et helt ark over.

Eksempel i en folder har jeg 20 forskellige excel-filer. I hver af dem er der et ark, som hedder investeringer. Jeg vil nu gerne i en eksisterende fil kopiere alle 20 forskellige ark "investeringer" ind i denne.

Er der nogen, som kan løse dette ?

mvh
Per
Avatar billede kabbak Professor
21. december 2005 - 17:10 #1
Public Sub GetDataFromOtherWorkbook()
    Dim sFolder As String
    Dim sFileToOpen() As String
    Dim wbData As Workbook
    Dim rInsert As Range
    Dim lCount As Long

    Application.ScreenUpdating = False
    Set rInsert = Sheets("Ark1").Range("A1")
    sFolder = "D:\VBA-Test\"
   
    lCount = 1
    ReDim sFileToOpen(1 To lCount)
    sFileToOpen(lCount) = Dir(sFolder + "*.xls")
    Do While Not (sFileToOpen(lCount) = "")
        lCount = lCount + 1
        ReDim Preserve sFileToOpen(1 To lCount)
        sFileToOpen(lCount) = Dir
    Loop
    ReDim Preserve sFileToOpen(1 To lCount - 1)
    For lCount = 1 To UBound(sFileToOpen)
        Set wbData = Application.Workbooks.Open(Filename:=sFolder & sFileToOpen(lCount))
      Workbooks(sFileToOpen(lCount)).Sheets("investeringer").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        wbData.Close SaveChanges:=False
        Set wbData = Nothing
    Next lCount
   
    ' Clean up
    Set rInsert = Nothing
    Application.ScreenUpdating = True
End Sub
Avatar billede kabbak Professor
21. december 2005 - 17:14 #2
Makroen skal være i den excelfil de skal over i, da kommandoen "ThisWorkbook", henviser til den excelfil makroen er i.
Avatar billede kabbak Professor
21. december 2005 - 17:25 #3
Hvis du vil have filnavn på arkene, for at kende dem fra hinanden, så er koden her.


Public Sub GetDataFromOtherWorkbook()
    Dim sFolder As String
    Dim sFileToOpen() As String
    Dim wbData As Workbook
    Dim rInsert As Range
    Dim lCount As Long

    Application.ScreenUpdating = False
    Set rInsert = Sheets("Ark1").Range("A1")
    sFolder = "D:\VBA-Test\"
   
    lCount = 1
    ReDim sFileToOpen(1 To lCount)
    sFileToOpen(lCount) = Dir(sFolder + "*.xls")
    Do While Not (sFileToOpen(lCount) = "")
        lCount = lCount + 1
        ReDim Preserve sFileToOpen(1 To lCount)
        sFileToOpen(lCount) = Dir
    Loop
    ReDim Preserve sFileToOpen(1 To lCount - 1)
    For lCount = 1 To UBound(sFileToOpen)
        Set wbData = Application.Workbooks.Open(Filename:=sFolder & sFileToOpen(lCount))
      Workbooks(sFileToOpen(lCount)).Sheets("investeringer").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
      ActiveSheet.Name = sFileToOpen(lCount) & "_investeringer"
        wbData.Close SaveChanges:=False
        Set wbData = Nothing
    Next lCount
   
    ' Clean up
    Set rInsert = Nothing
    Application.ScreenUpdating = True
End Sub
Avatar billede per_thorndal Nybegynder
22. december 2005 - 13:30 #4
Det er genialt - så enkelt og alligevel så stor værdi.

Takker for forslaget. Sidder i øjeblikket og undre mig over, hvordan jeg får tildelt point og lukket spørgsmålet.

mvh
Per

PS havde oprindelig afsat 100 point, men der stod kun 30, så den er ændret igen.
Avatar billede per_thorndal Nybegynder
22. december 2005 - 13:35 #5
prøver igen ....
Avatar billede kabbak Professor
22. december 2005 - 14:01 #6
et svar ;-))
Avatar billede kabbak Professor
22. december 2005 - 14:04 #7
marker mit navn i boksen til venstre og accepter
Avatar billede kabbak Professor
22. december 2005 - 14:07 #8
tak for point
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