kopie listu z jiného sešitu makrem Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

revol
nováček
Příspěvky: 25
Registrován: květen 14
Pohlaví: Muž
Stav:
Offline

kopie listu z jiného sešitu makrem

Příspěvekod revol » 13 říj 2014 14:16

Zdravím, všude, kde jsem hledal jsem našel kopírování aktivního listu, ale co když potřebuji zkopírovat list ze zavřeného sešitu v úplně jiném úložišti?

Poradil by mi někdo jak do otevřeného sešitu (za list "5") zkopírovat list ze sešitu "C:/file/zkouška.xlsx" s tím, že by to měl být list, který se jmenuje stejně jako text v buňce A1 listu "Data" daného otevřeného sešitu. Název zkopírovaného listu by měl zůstat stejný. Budu moc rád za radu, děkuju

Reklama
guest
Pohlaví: Nespecifikováno

Re: kopie listu z jiného sešitu makrem

Příspěvekod guest » 14 říj 2014 16:37

Od boku:

a) Vzorce provázané z naformátovaných buněk do zdroje dat
b) Pokud mají data databázové uspořádání (seznam), pak dotaz přes MS Query
c) Makra (GetObject a zkopírování, databázově - ADO, ACE, ExecuteExcel4macro - zde asi nevhodné)

revol
nováček
Příspěvky: 25
Registrován: květen 14
Pohlaví: Muž
Stav:
Offline

Re: kopie listu z jiného sešitu makrem

Příspěvekod revol » 16 říj 2014 13:03

a) se mi nechce dělat, složité
b) nemají
c) pomocí makra to chci řešit, ale neumím napsat správný kod.

Jak jsem psal, všude jsem našel kopii aktivního listu, nikoli listu z jiného souboru. Mám část (malou část) kodu, ale ve VBA začínám a nikde jsem nedohledal, jak přesně to má být.

Sub kopie()
GetObject("C:\file\zkouška.xlsx") - nevím jak mu říct, který list to vlastně chci
- příkaz na jeho zkopírování také nevím
after:=ActiveWorkbook.Sheets("5")
End sub

Budu rád, když mě někdo nakopne jak dál.

guest
Pohlaví: Nespecifikováno

Re: kopie listu z jiného sešitu makrem

Příspěvekod guest » 20 říj 2014 14:21

a) Složité? Jeden vzorec rozkopírovat a nahradit vzorce hodnotami? Maximálně 10 sekund.
b) OK
c) Přes GetObject obdržíte co? Sešit. Neumíte se odkázat na jeho druhý list? Máte nastudovaný model Excelu? A GetOject používáme proto, že s pomocí Set si ho přiřadíme do objektové proměnné. Do objektové proměnné si přiřaďte i cíl (namísto používání ActiveWorkbook).

Až přestanete tvrdit, že je něco složité a "nechce se mi", tak se mě možná bude chtít uvést příklad. Zatím v tom vidím jen lenost.

revol
nováček
Příspěvky: 25
Registrován: květen 14
Pohlaví: Muž
Stav:
Offline

Re: kopie listu z jiného sešitu makrem

Příspěvekod revol » 20 říj 2014 15:45

a) ano (sloučené buňky, formátování, různý počet sloupců a řádků v čase)- daný list nevytvářím já, jen ho potřebuju dostat do svého reportu
c) jsem samouk a ve volných chvílí se snažím aspon něco naučit. Asi model Excelu nastudovaný nemám, ale rád to doženu. Nechci abyste mi napsal celý kod, jsem rád, že se mým problémem zdržujete a rád kod vytvořím sám. Jen nápovědy musí být pro BFÚ...

guest
Pohlaví: Nespecifikováno

Re: kopie listu z jiného sešitu makrem

Příspěvekod guest » 20 říj 2014 16:45

Dobrá, trochu od boku, snad to půjde:

Kód: Vybrat vše

Sub KopieListu()

    Dim wkbZdroj As Workbook
    Dim wkbCil As Workbook

    Dim wshZdroj As Worksheet

    Set wkbCil = ThisWorkbook

    Set wkbZdroj = GetObject(ThisWorkbook.Path & "\" & "zdroj.xlsx")
    Set wshZdroj = wkbZdroj.Worksheets("List2")

    wshZdroj.Copy After:=wkbCil.Worksheets("List3")
   
    Set wshZdroj = Nothing
    Set wkbZdroj = Nothing

End Sub

revol
nováček
Příspěvky: 25
Registrován: květen 14
Pohlaví: Muž
Stav:
Offline

Re: kopie listu z jiného sešitu makrem

Příspěvekod revol » 24 říj 2014 14:52

Paráda, funguje výborně. Sice zdroj je v jiné složce než cíl a název kopírovaného listu musí být z buňky A1, ale s tím jsem si poradil.

Mám jeden dotaz. Zdroj, ze kterého kopíruju list má nějaká externí data a proto se vždy při otevření ptá, zda chci data akutualizovat. Při použití tohoto makra se zdroj otevře, zeptá se mě to zda chci aktualizovat, pak se zdroj zavře a list se nezkopíruje, jakmile ale makro použiji znovu, tak se list zkopíruje už bez ptaní.

Nedá se mu nadefinovat, at se neptá a bere ty data, která tam byla uložena při posledním ukládání, případně, ať si sám potvrdí, že se mají zaktualizovat?

Jinak díky za makro, toto je pro mě vyšší dívčí, to bych sám nedal..

guest
Pohlaví: Nespecifikováno

Re: kopie listu z jiného sešitu makrem

Příspěvekod guest » 24 říj 2014 19:33

Chování ve vztahu k aktualizaci propojených dat zkuste nastavit přímo v propojeném sešitu.

Excel 2010: Soubor / Informace / Upravit odkazy na soubory / Výzva při spuštění

revol
nováček
Příspěvky: 25
Registrován: květen 14
Pohlaví: Muž
Stav:
Offline

Re: kopie listu z jiného sešitu makrem

Příspěvekod revol » 06 lis 2014 16:03

měl bych ještě dotaz. Při testování jsem zjistil, že po zkopírování listu, nejde zdroj otevřít, respektive se otevře, zeptá se na aktualizace externích dat,ale zůstane šedivý excel jako by soubor nebyl otevřený. Když excel zavřu,tak se ptá, zda ho chci uložit.

Soubor jsem tedy obnovil ze zálohy a použil Tvou radu:
xlnc píše:Soubor / Informace / Upravit odkazy na soubory / Výzva při spuštění

Teď soubor funguje, takže dík.

Dotaz spočívá v tom, že poté co se list nakopíruje, tak zůstane zdrojový soubor někde na pozadí otevřen, sice není vidět, že je otevřen (opět vidím jen šedivý excel), ale když excel zavírám tak se ptá zda ho chci uložit. Problém je, že se souborem pracuje více lidí a já ho tímto blokuju. Nevím proč se to děje,ale nešlo by tam přidat, že po nakopírovaní se zdrojový excel bez uložení zavře?

Kód: Vybrat vše

Workbooks("sesit.xls").Close SaveChanges:=False
nefunguje:-(

cmuch
Level 4.5
Level 4.5
Příspěvky: 1544
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: kopie listu z jiného sešitu makrem

Příspěvekod cmuch » 06 lis 2014 18:44

Vynechej v názvu sešitu koncovku.

Kód: Vybrat vše

Workbooks("sesit").Close SaveChanges:=False

revol
nováček
Příspěvky: 25
Registrován: květen 14
Pohlaví: Muž
Stav:
Offline

Re: kopie listu z jiného sešitu makrem

Příspěvekod revol » 07 lis 2014 09:00

Kód: Vybrat vše

Sub kopie()
   
    Dim wshZdroj As Worksheet

    Set wkbCil = ThisWorkbook

    Set wkbZdroj = GetObject("T:\Správa\Mel 3, P2.xls")
    Set wshZdroj = wkbZdroj.Worksheets([A1].Value)

    wshZdroj.Copy After:=wkbCil.Worksheets("Data")
   
    Set wshZdroj = Nothing
    Set wkbZdroj = Nothing
   
    Workbooks("T:\Správa\Mel 3, P2").Close SaveChanges:=False

End Sub


Nefunguje:-( List zkopíruje, hodí mi to chybu "Subscript out of range" a opět je zdrojový soubor otevřený

Nevadí mezera v názvu souboru?

cmuch
Level 4.5
Level 4.5
Příspěvky: 1544
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: kopie listu z jiného sešitu makrem

Příspěvekod cmuch » 07 lis 2014 13:23

Upraveno.

Kód: Vybrat vše

Sub kopie()
   
    Dim wshZdroj As Worksheet

    Set wkbCil = ThisWorkbook

    Set wkbZdroj = GetObject("T:\Správa\Mel 3, P2.xls")
    Set wshZdroj = wkbZdroj.Worksheets([A1].Value)

    wshZdroj.Copy After:=wkbCil.Worksheets("Data")
   
    wkbZdroj.Close SaveChanges:=False

    Set wshZdroj = Nothing
    Set wkbZdroj = Nothing

End Sub


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Funstorm007 a 7 hostů