Avatar billede 5floor Nybegynder
11. april 2006 - 11:25 Der er 70 kommentarer og
3 løsninger

Kopier SheetX til SheetY,hvor arkene ligger i hver deres workbook

Hej.
Jeg har brug for en makro der kan kopiere alt indhold fra et sheet til et andet(overskrive det der står i forvejen) og hvor de to sheets ikke ligger i samme workbook, men kan ikke rigtig komme igang med en løsning.
Nogen der kan hjælpe?

Mads
11. april 2006 - 11:28 #1
Sub Demo()
    Sheets("Ark2").UsedRange.ClearContents
    Sheets("Ark1").UsedRange.Copy
    Sheets("Ark2").Range("A1").PasteSpecial xlPasteAll
End Sub

Ovenstående er skrevet i frihåndsredigering, så der kan være fejl.
Avatar billede 5floor Nybegynder
11. april 2006 - 11:35 #2
Hej Flemming.
Kræver din løsning ikke, at sheets ligger i samme workbook? Det gør de nemlig ikke. De kan til nød ligge i samme mappe (fx. c:\excel\book1.xls og c:\excel\book2.xls).
Mvh
Mads
11. april 2006 - 11:39 #3
jo det har du ret i....
kan du nøjes med at overskrive det andet ark?
Avatar billede 5floor Nybegynder
11. april 2006 - 11:44 #4
Hej Flemming.
Nej desværre, da book1 indeholder en masse andet data i en række andre sheets.
Mads
11. april 2006 - 12:10 #5
ikke testet

Sub Demo()
    Const sFILE_TO As String = "C:\Excel\Book2.xls"
    Const sSHEET_TO As String = "Til arknavnet"
    Const sSHEET_FROM As String = "Fra arknavnet"
    Dim wbFrom As Workbook
    Dim wbTo As Workbook
   
    Set wbFrom = ThisWorkbook
    On Error GoTo ProgErr
    Set wbTo = Application.Workbooks.Open(Filename:=sFILE_TO)
   
    wbTo.Worksheets(sSHEET_TO).UsedRange.ClearContents
    wbFrom.Worksheets(sSHEET_FROM).UsedRange.Copy
    wbTo.Worksheets(sSHEET_TO).Range("A1").PasteSpecial xlPasteAll

    GoTo CleanUp

ProgErr:
    MsgBox "Workbook or sheet not found - no copy made", _
          vbExclamation + vbOKOnly, "Systeminformation"

CleanUp:
    On Error GoTo 0
    wbTo = Nothing
    wbFrom = Nothing
End Sub
Avatar billede 5floor Nybegynder
11. april 2006 - 13:16 #6
Hej Flemming.
Den hopper direkte til fejlbeskeden, og ender med Book2 i fokus og indholdet er markeret.
Mads
11. april 2006 - 13:30 #7
Har du ændret arknavnene? til nogle arknavne der findes?

    Const sSHEET_TO As String = "Til arknavnet"
    Const sSHEET_FROM As String = "Fra arknavnet"
Avatar billede excelent Ekspert
11. april 2006 - 18:15 #8
Prøv evt. denne
Indsæt i destinations filen, i et modul

Sub Kopier()
Sheets("Ark1").UsedRange.Delete
Workbooks.Open Filename:="c:\Temp\Kvartil.XLS" ' Ret til aktuel mappe filnavn *
Workbooks("Kvartil").Worksheets("Ark1").Range("A1:iv300").Copy ' Ret til aktuel fil, ark navn *
Workbooks("KopierTil").Worksheets("Ark1").Activate ' Ret til aktuel fil, ark navn *
Range("A1").Activate
ActiveCell.PasteSpecial
Workbooks("Kvartil.xls").Close savechanges:=False ' Ret til aktuel ark navn *
[A1].Select
End Sub
Avatar billede excelent Ekspert
11. april 2006 - 18:31 #9
Sheets("Ark1").UsedRange.Delete ' skal også rettes til aktuel destinationsark navn
11. april 2006 - 21:00 #10
Testet så det virker - husk at ændre sti, filnavn samt arknavnene

Sub Demo()
    Const sFILE_TO As String = "C:\Excel\Book2.xls"
    Const sSHEET_TO As String = "Sheet1"
    Const sSHEET_FROM As String = "Sheet1"
    Dim wbFrom As Workbook
    Dim wbTo As Workbook
    Dim lTemp As Long
   
    Set wbFrom = ThisWorkbook
    On Error GoTo ProgErr
    Set wbTo = Application.Workbooks.Open(Filename:=sFILE_TO)
   
    wbTo.Worksheets(sSHEET_TO).UsedRange.ClearContents
    ' The next line does nothing but correct a bug in Excel about UsedRange
    lTemp = wbFrom.Worksheets(sSHEET_FROM).UsedRange.Rows.Count
    wbFrom.Worksheets(sSHEET_FROM).UsedRange.Copy
    wbTo.Worksheets(sSHEET_TO).Range("A1").PasteSpecial xlPasteAll

    GoTo CleanUp

ProgErr:
    MsgBox "Workbook or sheet not found - no copy made", _
          vbExclamation + vbOKOnly, "Systeminformation"

CleanUp:
    On Error GoTo 0
    Application.CutCopyMode = False
    Set wbTo = Nothing
    Set wbFrom = Nothing
End Sub
Avatar billede 5floor Nybegynder
11. april 2006 - 22:33 #11
-->excelent.
Jeg kan ikke få dit eksempel til at virke - måske jeg ikke bruger det korrekt (ved du at det virker)?

-->flemmingdahl.
Jeg kan godt få dit eksempel til at virke, men ikke helt efter hensigten. Jeg har ikke fået forklaret mig korrekt, det er uhensigtsmæssigt og det beklager jeg. Tilfældet er det, at jeg via en knap i sheet8 i book1.xls skal hente data fra sheet2 i book2.xls og indsætte i sheet9 i book1.xls. Har prøvet at omforme dit eksempel, men uden held.

Mvh
Mads
Avatar billede excelent Ekspert
12. april 2006 - 06:26 #12
'ja det virker ok her :-)
'Indsæt kode i et modul i Book1.xls (Book2.xls skal ikke være åbnet når makro køres)

Sub Kopier()
Sheets("Sheet9").UsedRange.Delete
Workbooks.Open Filename:="c:\Mappenavn\Book2.XLS" ' Ret til aktuel sti *
Workbooks("Book2").Worksheets("Sheet2").Range("A1:iv300").Copy ' ret evt. område *
Workbooks("Book1").Worksheets("Sheet9").Activate
Range("A1").Activate
ActiveCell.PasteSpecial
Application.CutCopyMode = False
Workbooks("Book2.xls").Close savechanges:=False
[A1].Select
End Sub
12. april 2006 - 08:29 #13
ikke testet

Sub Demo()
    Const sFILE_GET As String = "C:\Excel\Book2.xls"
    Const sSHEET_GET As String = "Sheet2"
    Const sSHEET_INSERT As String = "Sheet9"
    Dim wbGet As Workbook
    Dim wbInsert As Workbook
    Dim lTemp As Long
   
    Set wbInsert = ThisWorkbook
    On Error GoTo ProgErr
    Set wbGet = Application.Workbooks.Open(Filename:=sFILE_GET)
   
    wbInsert.Worksheets(sSHEET_INSERT).UsedRange.ClearContents
    ' The next line does nothing but correct a bug in Excel about UsedRange
    lTemp = wbFrom.Worksheets(sSHEET_GET).UsedRange.Rows.Count
    wbInsert.Worksheets(sSHEET_GET).UsedRange.Copy
    wbGet.Worksheets(sSHEET_INSERT).Range("A1").PasteSpecial xlPasteAll

    GoTo CleanUp

ProgErr:
    MsgBox "Workbook or sheet not found - no copy made", _
          vbExclamation + vbOKOnly, "Systeminformation"

CleanUp:
    On Error GoTo 0
    Application.CutCopyMode = False
    Set wbGet = Nothing
    Set wbInsert = Nothing
End Sub
Avatar billede 5floor Nybegynder
12. april 2006 - 13:19 #14
excelent:
Jeg får en fejl i denne linie : Workbooks("Book2").Worksheets("Sheet2").Range("A1:iv100").Copy ' ret evt. område *
Jeg har rettet stien til, har også prøvet at lægge den i c:\Book2.xls for at se om Excel hadve problemer med mellemrum i mappenavne mv. Men det virker fortsat ikke.

Flemmingdahl:
Jeg får en fejl på denne linie:
lTemp = wbFrom.Worksheets(sSHEET_GET).UsedRange.Rows.Count
Hvis jeg udkommenterer den og kører igen, så kommer Book2.xls i fokus og alt indhold er markeret - men der sker ikke mere?

<skal nok smide fuld point i puljen, I bruger meget tid/energi her, og det er jeg glad for>
Avatar billede excelent Ekspert
12. april 2006 - 13:27 #15
nu ved jeg ikke hvor stort område du har data i, men prøv evt. at ændre det til
Workbooks("Book2").Worksheets("Sheet2").Range("A1:EV100").Copy ' ret evt. område *
eller mindre hvis muligt

vi skal nok få det til at virke :-)
Avatar billede 5floor Nybegynder
12. april 2006 - 13:35 #16
selv hvis jeg ændrer Range til A1:M50 får jeg fejl i den linie.
Det er en runtime error "9"
Subscrift out of Range

Jeg er ved godt mod og er fortrøstningsfuld :-)
Avatar billede excelent Ekspert
12. april 2006 - 13:37 #17
kan du evt paste din kode her, så kan vi kikke nærmere på den ?
Avatar billede 5floor Nybegynder
12. april 2006 - 13:42 #18
yes, selvfølgelig.

--------------
Sub Kopier()
Sheets("Sheet3").UsedRange.Delete
Workbooks.Open Filename:="C:\Book2.XLS" ' Ret til aktuel sti *
Workbooks("Book2").Worksheets("Sheet2").Range("A1:M50").Copy ' ret evt. område *
Workbooks("Book1").Worksheets("Sheet3").Activate
Range("A1").Activate
ActiveCell.PasteSpecial
Application.CutCopyMode = False
Workbooks("Book2.xls").Close savechanges:=False
[A1].Select
End Sub

--------------------
Avatar billede excelent Ekspert
12. april 2006 - 15:37 #19
virker mystisk da der ikke er variabler i koden
Avatar billede excelent Ekspert
12. april 2006 - 15:43 #20
prøv skift denne ud
Sheets("Sheet3").UsedRange.Delete
med
Sheets("Sheet3").Range("A1:IV300").Delete
Avatar billede excelent Ekspert
12. april 2006 - 17:57 #21
Ellers prøv åbne begge ark og kør denne kode:

Sub KopierArk()

Workbooks("Book1").Worksheets("Sheet3").Activate
Sheets("Sheet3").UsedRange.Delete
Range("A1").Activate
Workbooks("Book2").Worksheets("Sheet2").Range("A1:M50").Copy Destination:=ActiveCell
Application.CutCopyMode = False
[A1].Select

End Sub
Avatar billede mrjh Novice
12. april 2006 - 18:09 #22
Denne er meget lig Excelents kode, men den kopierer istedet usedrange og dermed undgås subscript out of range forhåbentlig.


Sub kopier_workbook()

Worksheets("Sheet3").UsedRange.Delete
Workbooks.Open Filename:="C:\Book2.xls"
Workbooks("Book2").Worksheets("Sheet2").UsedRange.Copy _
Destination:=Workbooks("Book1").Worksheets("Sheet3").Range("a1")
Workbooks("Book1").Worksheets("Sheet3").Columns.AutoFit
Workbooks("Book2").Close savechanges:=False

End Sub
Avatar billede excelent Ekspert
12. april 2006 - 18:23 #23
hej mrjh har du prøvet min kode ? og i såfald får du også den samme fejl ?
Avatar billede mrjh Novice
12. april 2006 - 18:51 #24
Hej Excelent. Nej jeg får ingen fejl når jeg prøver din kode, så det var åbenbart ikke usedrange som løste det. Måske er det filnavnet som ikke er korrekt og som derfor er "out of range", eller måske et af arknavnene som ikke eksisterer. Ellers er gode råd dyre :-)
Avatar billede excelent Ekspert
12. april 2006 - 19:00 #25
lol
Avatar billede 5floor Nybegynder
13. april 2006 - 12:27 #26
Hej.
Jeg får fortsat fejl, desværre.
Jeg har nu prøvet på 2 forskellige pc'ere med samme resultat. Jeg har forsøgt at slette + genoprette excel-dokumenterne igen (Book1 og Book2). Jeg er 100 % sikker på, at både filnanve og arknanve eksisterer :-)

Er der mere at prøve (hope so).
mads
Avatar billede excelent Ekspert
13. april 2006 - 12:30 #27
har du prøvet koden fra kommentar 17:57:20 (med begge ark åbne) ?
Avatar billede 5floor Nybegynder
13. april 2006 - 12:33 #28
Ja, så får jeg fejl i denne linie:
Workbooks("Book1").Worksheets("Sheet3").Activate

Er der nogle specielle indstillinger mv. jeg skal have slået til/fra? Det lyder jo usandsynligt, at det ikke virker på mine 2 pc'ere, men at det virker fint på Jeres? Den jeg arbejder med her er med en engelsk Office-pakke....

Mads
Avatar billede excelent Ekspert
13. april 2006 - 12:40 #29
hmm ja den er svær, mig bekendt er der ikke noget der skal slåes til el. fra
og min version er godt nok Dansk 2003, men i VBA er det jo underordnet.

et skud i tågen har du beskyttet dine ark, låste celler, -eller evt delte (shared) projektmapper el. lign. ?
Avatar billede 5floor Nybegynder
13. april 2006 - 12:47 #30
Ikke noget jeg er bevidst om i hvert fald. Jeg har netop for at undgå sådanne faktorer bare højreklikket i c:\ og oprettet 2 tomme excelark med de omtalte navne. Skrevet henholdsvis Book1 og Book2 i en celle i hvert ark (for at kunne se hvis det lykkedes), kopieret Jeres eksempler ind i VBA editoren(alt+F11), og dereter enten kørt makroen fra Book1 via alt+f8 eller indsat en knap med tilknytning til de forskellige eksempler.
Mads
Avatar billede mrjh Novice
13. april 2006 - 12:58 #31
Og der er Sheet2 og Sheet3 som arknavne i filerne ?
Avatar billede excelent Ekspert
13. april 2006 - 13:02 #32
prøv lige med denne tilretning

Sub KopierArk()

Workbooks("Book1").Activate
WorkSheets("Sheet3").Activate
WorkSheets("Sheet3").Range("A1:M50").Delete
Range("A1").Activate
Workbooks("Book2").Worksheets("Sheet2").Range("A1:M50").Copy Destination:=ActiveCell
Application.CutCopyMode = False
[A1].Select

End Sub
Avatar billede 5floor Nybegynder
13. april 2006 - 13:03 #33
Yes, helt standard navngivning i et nyopretter excelark...
Har I evt. nogle idéer til, om vi kan prøve nogle mindre/andre kodestykker for at se hvor det går galt?
Mads
Avatar billede excelent Ekspert
13. april 2006 - 13:04 #34
obs: med begge ark åbne
Avatar billede excelent Ekspert
13. april 2006 - 13:05 #35
ja fik samme ide 5floor, så prøv lige 13:02:47
Avatar billede excelent Ekspert
13. april 2006 - 13:06 #36
har fjernet den med 'usedrange', kan godt drille en del somtimes
Avatar billede 5floor Nybegynder
13. april 2006 - 13:08 #37
Så får jeg fejl i denne linie:
Workbooks("Book1").Activate
Er det ikke lidt underligt? Det er da en super simpel og typisk kodelinie?

Mads
Avatar billede 5floor Nybegynder
13. april 2006 - 13:09 #38
Med fejl mener jeg, den linie vba-editor markerer med gult og sætter en pil ud for....
Avatar billede 5floor Nybegynder
13. april 2006 - 13:09 #39
og begge ark er åbne
Avatar billede excelent Ekspert
13. april 2006 - 13:12 #40
prøv lige at klik i ordet Workbooks og så tryk F1
for at se om din version genkender kommandoen
Avatar billede 5floor Nybegynder
13. april 2006 - 13:19 #41
Så viser den Workbooks properties og tilsvarende med Worksheets.
Avatar billede excelent Ekspert
13. april 2006 - 13:20 #42
når du opretter et nyt regneark, er der så mellemrum mellem Sheet og 1 tal ?
Avatar billede excelent Ekspert
13. april 2006 - 13:20 #43
i akr navnene
Avatar billede 5floor Nybegynder
13. april 2006 - 13:22 #44
nej de hedder: Sheet1 osv.(uden mellemrum)
Avatar billede mrjh Novice
13. april 2006 - 13:22 #45
Prøv evt. indeksnumre og se om de også fejler
Workbooks(1).Activate
Worksheets(2).Activate
Avatar billede 5floor Nybegynder
13. april 2006 - 13:32 #46
så har vi fat i noget - det virker...
Avatar billede excelent Ekspert
13. april 2006 - 13:33 #47
lol, det tyder også på det var noget galt med navnene
Avatar billede mrjh Novice
13. april 2006 - 13:35 #48
Ja åbenbart :-)
Vær opmærksom på at indeksene virker på alle åbne filer
Avatar billede 5floor Nybegynder
13. april 2006 - 13:35 #49
det forstår jeg bare ikke....http://clasix.users.whitehat.dk/untitled.JPG
Sådan ser arket ud?
Avatar billede excelent Ekspert
13. april 2006 - 13:39 #50
mrjh> hvis man indlæser flere regneark, er det først indlæste så Workbook(1)
næste Workbook(2) eller hur ?
Avatar billede 5floor Nybegynder
13. april 2006 - 13:41 #51
...og hvorfor virker den direkte reference hos Jer og ikke hos mig?
Jeg ville stærkt foretrække at henvise direkte og ikke være afhængig af, i hvilken rækkefølge/hvilke ark der er åbne når makroen afvikles.
Avatar billede excelent Ekspert
13. april 2006 - 13:44 #52
godt spørgsmål 5floor, men jeg er helt ening
Avatar billede excelent Ekspert
13. april 2006 - 13:51 #53
har du fået skruet den sammen, eller skal du have et bud/førsøg ?
Avatar billede 5floor Nybegynder
13. april 2006 - 13:54 #54
Prøver :-)
Men det lykkedes ikke rigtig.
Vil være glad for et forsøg (hvis jeg da på nogen måde kan tillade mig at bruge mere af Jeres tid).
Avatar billede excelent Ekspert
13. april 2006 - 14:03 #55
no problemo vi er stædige som ind i h.... :-) skal lige ha den til at virke lol
Avatar billede 5floor Nybegynder
13. april 2006 - 14:08 #56
Super, det er jeg glad for.
Avatar billede excelent Ekspert
13. april 2006 - 14:29 #57
sjovt nok så får jeg de fejl du gjorde ved brug af indeksnr.
arbejder på sagen
Avatar billede excelent Ekspert
13. april 2006 - 14:46 #58
prøv lige min version- er kun delvist brugt indeks.nr. for at få den til at virke
obs. har kaldt den Book1X.xls , så den ikke konflikter med din Book1.xls
så enten ret i koden eller skift filnavn

http://pmexcelent.dk/Book1X.xls
Avatar billede 5floor Nybegynder
13. april 2006 - 14:50 #59
Så får jeg en fejl her: Workbooks("Book2").Worksheets("Sheet2").Range("A1:M50").Copy
Avatar billede excelent Ekspert
13. april 2006 - 14:55 #60
hjæææælp :-)
13. april 2006 - 18:07 #61
Jeg melder mig lige fra - jeg bliver jo spammet med mails fra dette spørgsmål.
Avatar billede 5floor Nybegynder
13. april 2006 - 23:05 #62
Helt ok Flemming, din løsning så ellers spændende ud...
Jeg lader spørgsmålet stå åbent lidt endnu - håber det ender med en brugbar løsning.
God påske.
Mads
Avatar billede excelent Ekspert
14. april 2006 - 10:14 #63
Nå 5floor problemet er ikke forsvundet i nattens løb lol :-)
Jeg kan ikke finde fejl i de forslag vi hidtil er kommet med,
de burde virke (det tyder altså på at det er forhold hos dig som
forhindrer en problemfri afvikling af koderne).

Jeg har ikke meget nyt på tapetet men du kan evt. prøve:

1. Ændre arknavne i den ene workbook, så de ikke er ens
2. evt. dele linierne op i små bidder fx.
  Workbooks("Book2").Worksheets("Sheet2").Range("A1:M50").Copy deles til
  Workbooks("Book2").Activate
  Worksheets("Sheet2").Activate
  Range("A1:M50").Copy
3. Eksperimentere med indeks nr. (jeg har ikke helt styr på dette endnu)

jeg vender tilbage, hvis jeg får nogen ideer.

Hvad Excel version kører du med ?
Avatar billede 5floor Nybegynder
21. april 2006 - 12:58 #64
Hej.
Jeg kan fortsat ikke få det til at virke efter hensigten.
Jeg vil gerne takke for Jeres tid og energi. Læg venligst svar, så tildeler jeg Jer point (har lige opjusteret pointsum).
Mvh
Mads
Avatar billede excelent Ekspert
21. april 2006 - 13:39 #65
hej 5floor.- har heller ikke glemt dit problem, men desværre ingen løsning endnu :-)
Avatar billede mrjh Novice
21. april 2006 - 13:56 #66
Jeg springer over Pointene i denne omgang. Det er vist excelent som har brugt mest tid her og fortjener P.
Jeg kan heller ikke forstå at det ikke virker, men håber at du får det løst :-)
Avatar billede excelent Ekspert
21. april 2006 - 17:59 #67
ok takker :-)
Avatar billede 5floor Nybegynder
24. april 2006 - 20:08 #68
Endnu en gang tak for tiden og energien.
Mvh
Mads
Avatar billede 5floor Nybegynder
24. april 2006 - 20:09 #69
Endnu engang tak for tiden og energien.
Mvh Mads
Avatar billede 5floor Nybegynder
24. april 2006 - 20:10 #70
Endnu engang tak for tiden og energien.
Mvh Mads
Avatar billede 5floor Nybegynder
24. april 2006 - 20:11 #71
Endnu engang tak for tiden og energien.
Mvh Mads
Avatar billede 5floor Nybegynder
24. april 2006 - 20:11 #72
Endnu engang tak for tiden og energien.
Mvh Mads
Avatar billede excelent Ekspert
05. maj 2006 - 16:06 #73
Hej Mads - prøv lige om denne virker

Sub Kopier()
 
  Sheets("Sheet3").UsedRange.Delete
  Workbooks.Open Filename:="C:\Book2.XLS" ' Ret til aktuel sti *
  Sheets("Sheet1").Select ' Ret til aktuel ark
  Range("A1:M50").Select ' Ret til aktuel område
  Selection.Copy
  Windows("Book1").Activate ' Ret til aktuel
  Sheets("Sheet3").Select ' Ret til aktuel
  Range("A1").Select ' Ret til aktuel
  ActiveSheet.Paste
  Range("a1").Select
  Windows("book2").Activate ' Ret til aktuel
  Range("a1").Select
  Application.CutCopyMode = False
  ActiveWindow.Close

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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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