Avatar billede Frk Lund Praktikant
27. januar 2017 - 13:41 Der er 4 kommentarer

Makro til "sheet" og ikke "ThisWorkbook"

Jeg har en makro, som jeg kan få til at fungere hvis den placeret i ThisWorkbook - men ikke hvis jeg vil have den placeret i et bestemt ark.
Er der nogen som kan fortælle mig hvorfor ?
Koden er:
[Sub simpleXlsMerger()
Dim bookList As Workbook
Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object
Application.ScreenUpdating = False
Set mergeObj = CreateObject("Scripting.FileSystemObject")
Set dirObj = mergeObj.Getfolder("C:\File\Folder with sheets")
Set filesObj = dirObj.Files
For Each everyObj In filesObj
Set bookList = Workbooks.Open(everyObj)
Range("A2:AF" & Range("A65536").End(xlUp).Row).Copy
ThisWorkbook.Worksheets(1).Activate
Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
bookList.Close
Next
End Sub]
Avatar billede supertekst Ekspert
27. januar 2017 - 14:59 #1
Prøv denne kode - der er lidt ændring:
Sub simpleXlsMerger()
Dim bookList As Workbook
Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object
    Application.ScreenUpdating = False
    Set mergeObj = CreateObject("Scripting.FileSystemObject")
    Set dirObj = mergeObj.Getfolder("C:\File\Folder with sheets")
    Set filesObj = dirObj.Files
    For Each everyObj In filesObj
        Set bookList = Workbooks.Open(everyObj)
        ActiveSheet.Range("A2:AF" & Range("A65536").End(xlUp).Row).Copy
        ThisWorkbook.Worksheets(1).Activate
        Selection.Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
        Application.CutCopyMode = False
        bookList.Close
    Next
End Sub
Avatar billede supertekst Ekspert
27. januar 2017 - 15:00 #2
Om igen:
Sub simpleXlsMerger()
Dim bookList As Workbook
Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object
    Application.ScreenUpdating = False
    Set mergeObj = CreateObject("Scripting.FileSystemObject")
    Set dirObj = mergeObj.Getfolder("C:\File\Folder with sheets")
    Set filesObj = dirObj.Files
    For Each everyObj In filesObj
        Set bookList = Workbooks.Open(everyObj)
        ActiveSheet.Range("A2:AF" & Range("A65536").End(xlUp).Row).Copy
        ThisWorkbook.Worksheets(1).Activate
        Selection.Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
        Application.CutCopyMode = False
        bookList.Close
    Next
End Sub
Avatar billede Frk Lund Praktikant
27. januar 2017 - 15:18 #3
Hej Guru,

Tak for dit forslag..
Jeg lagde den ind i et bestemt ark - lad os kalde den "Test" ved, at højre-klikke på arket - view code - og indsatte dit forslag.

Makroen kørte uden fejl, men resultatet var besynderlig:
Der var kun de 2 første linier i hver fil, som blev overført og den åbnede/kopierede kun fra 8 ud af 13 filer..

Mit mål er at merge data fra en lang række filer, som har samme opbygning.
Makroen skal så åbne arkene kopiere data (efter hinanden) og lukke arkene igen.
Sådan en makro skal jeg have til 4 forskellige ark i samme workbook (grundet begrænsningerne af rækker i excel).

Hvad tænker du ? Er der en bedre løsning til problemstillingen - og/eller hvad skal der til for at makroen kopiere samtlig data i hvert ark?
Avatar billede supertekst Ekspert
27. januar 2017 - 15:50 #4
Hej Frk. Lund

Selv tak.

Det kan nok gøres på en anden måde - men det ville være en hjælp hvis du kunne fremstille en model "kildedata" og af det ønskede resultat hver for sig.

Hvis du anvender www.supertekst-it.dk | Kontakt
så svarer jeg og du kan fremsende data direkte eller via Dropbox eller lignende.
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