Stránka 1 z 1

Uložení pouze hodnot nikoliv vzorců v Excelu

Napsal: 01 čer 2007 14:54
od cerjar
Potřeboval bych excelový list /popř. všechny listy/ uložit pouze jako hodnoty. Tzn. že v buňkách, kde jsou nějaké vzorce, aby se uložily pouze vypočtené hodnoty. Nejlepší by na to bylo asi nějaké makro, které uloží vše jako nový excelový sešit pouze s hodnotami.

Díky všem

Napsal: 01 čer 2007 15:17
od alias75
Smaž si to druhé dubl téma.

Napsal: 01 čer 2007 21:28
od mmmartin
Na makro si netroufám, ale manuálně to není problém: zdrojový list načteš do schránky - např kombinací ctrl+a ctrl+c - přejdeš na buňku A1 listu, na který chceš vložit hodnoty a pak v menu vybereš Úpravy/Vložit jinak, v nabídnutém dialogu vybereš Hodnoty a dáš OK. Takto zkopírované hodnoty se ale neaktualizují při změně zdrojových dat.

Napsal: 04 čer 2007 13:44
od cerjar
mmmartin píše:Na makro si netroufám, ale manuálně to není problém: zdrojový list načteš do schránky - např kombinací ctrl+a ctrl+c - přejdeš na buňku A1 listu, na který chceš vložit hodnoty a pak v menu vybereš Úpravy/Vložit jinak, v nabídnutém dialogu vybereš Hodnoty a dáš OK. Takto zkopírované hodnoty se ale neaktualizují při změně zdrojových dat.



Tady o te moznosti vim, ale potreboval bych trochu elegnatnejsi reseni... v excelovem sesitu je asi 50 listu a rad bych to prevadel hromadne....

Napsal: 04 čer 2007 14:32
od Jan Pašek
A co použít záznam makra s funkcí relativně Uděláš si makro pro jeden list s přepnutím na list následující Pak již jen mačkáš přidělenou klávesovou zkratku. Mám ale pocit ze to nebude fungovat ve dvou souborech.

Napsal: 06 čer 2007 11:06
od Rich
Zkus tohle

Sub Preved_nahodnoty()
Dim Lst As Worksheet
Dim Bunka As Object
Application.ScreenUpdating = False
For Each Lst In ActiveWorkbook.Worksheets
Range("A1:F100").Select ' zde si dopln jak potrebujes
For Each Bunka In Selection
Bunka = Bunka.Value
Next Bunka
Next Lst
End Sub

Napsal: 09 čer 2007 10:45
od mikel
Rich: V tom tvém případě si převede všechny vzorce na hodnoty přímo v sešitě a tím pádem už se ke vzorcům zpětně nedostane.
Já bych to radši řešil kopií do jiného sešitu, ať se může ještě vrátit k původnímu sešitu a vzorcům.

Kód: Vybrat vše

Sub prevod()
   Set Zdroj = ActiveWorkbook
   Set Cil = Workbooks.Add
   For Each List In Zdroj.Worksheets
      List.Copy After:=Cil.Sheets(Worksheets.Count)
      ActiveSheet.Cells.Copy
      ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
      ActiveSheet.Range("A1").Select
      Application.CutCopyMode = False
   Next List
End Sub

Napsal: 10 čer 2007 07:45
od Rich
mikel píše:Rich: V tom tvém případě si převede všechny vzorce na hodnoty přímo v sešitě a tím pádem už se ke vzorcům zpětně nedostane.
Já bych to radši řešil kopií do jiného sešitu, ať se může ještě vrátit k původnímu sešitu a vzorcům.

Kód: Vybrat vše

Sub prevod()
   Set Zdroj = ActiveWorkbook
   Set Cil = Workbooks.Add
   For Each List In Zdroj.Worksheets
      List.Copy After:=Cil.Sheets(Worksheets.Count)
      ActiveSheet.Cells.Copy
      ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
      ActiveSheet.Range("A1").Select
      Application.CutCopyMode = False
   Next List
End Sub



Pokud jsou v sešitu sloučené buňky, následující příkazy hlásí chybu.

ActiveSheet.Cells.Copy
ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues

Napsal: 10 čer 2007 10:13
od mikel
To je pravda. V tvém případě jsi zapomněl na jednu podstatnou věc:

...
For Each Lst In ActiveWorkbook.Worksheets
Lst.Activate
Range("A1:F100").Select ' zde si dopln jak potrebujes
...

určitě víš, jaký bude výsledek, když zůstane stále na prvním listě. A dynamickou oblast taky nepodchytíš, pokud pro jistotu neurčíš oblast A1:IV65536.

Ale o to nejde. Jde o to, že na dálku a bez konkrétních informací můžeš udělat pouze nějaké makro, ale bez konkrétního příkladu ho nikdy neodladíš. Takže pokud by výsledek nebyl takový, jak cerjar očekává, ozval by se.

Napsal: 10 čer 2007 16:17
od Rich
určitě víš, jaký bude výsledek, když zůstane stále na prvním listě. A dynamickou oblast taky nepodchytíš, pokud pro jistotu neurčíš oblast A1:IV65536.

To by trvalo děsně dlouho