< návrat zpět

MS Excel


Téma: Kopirování tabulky do souboru rss

Zaslal/a 2.12.2019 9:22

Dobrý den
Sešit ma několik listů. Pomocí makra ukládám každý list (po doplnění dat, aktualizaci) jako samostatný soubor - viz část kodu níže.
Funguje, jen jsem dostal připomínku, že v nových souborech jsou linky na soubor původní. Ukládají se totiž vzorce.
Jdu si pro radu jak "cestou nejmenšího odporu", nejmenší změnou kodu vkládat VYSLEDKY ne vzorce.
Díky za váš čas a radu :-)



Set wb = ThisWorkbook
Set ws = wb.Sheets(„AAA“)
Set wbNew = Workbooks.Add
Cesta = „D:\pokus\2020\“
With wbNew
Set wsNew = wbNew.Sheets(„List1“)
wsNew.Name = ws.Name
ws.Rows.Copy
wsNew.Paste
soubor = „pokus_ „ & ws.Name & „ .xlsx“
On Error Resume Next
.SaveAs Filename:=cesta & soubor
On Error GoTo 0
End with

Zaslat odpověď >

#045145
Stalker
wsNew.PasteSpecial (xlPasteValues)citovat
#045154
avatar

Stalker napsal/a:

wsNew.PasteSpecial (xlPasteValues)

1
Díkcitovat
#045168
avatar

Stalker napsal/a:

wsNew.PasteSpecial (xlPasteValues)

předčasná radost...
RunTime Error 1004: Method "PasteSpecial" of object "_WorkSheet" failedcitovat
#045169
elninoslov
Podľa mňa je takýto postup celý zle. Skúste kopírovať celý list, nie riadky. Potom stačí hodnotu použitých buniek nahradiť vlastnou hodnotou. Pr.:
Sub pokus()
Dim wb As Workbook, wbNew As Workbook, ws As Worksheet, wsNew As Worksheet
Dim cesta As String, soubor As String

Set wb = ThisWorkbook
Set ws = wb.Worksheets("AAA")

cesta = "D:\pokus\2020\"
soubor = "pokus_ " & ws.Name & " .xlsx"

Application.ScreenUpdating = False
ws.Copy
Set wbNew = ActiveWorkbook
With wbNew
With .Sheets("AAA").UsedRange
.Value = .Value
End With

On Error Resume Next
.SaveAs Filename:=cesta & soubor
If Err.Number = 0 Then .Close False
On Error GoTo 0
End With
Application.ScreenUpdating = True
End Sub

Chcete aby som Vám to upravil nech to spraví všetky listy ?citovat
#045170
avatar

elninoslov napsal/a:


Chcete aby som Vám to upravil nech to spraví všetky listy ?


Díky, pomoc určitě neodmítnu... 1
Ideální by bylo, kdyby si makro zjistilo názvy listů/souborů. Každý rok se mění, nemusel bych je opravovat v kodu :-)citovat
#045171
elninoslov
Skúste na kópii dát.
Ak by išlo o viac listov (desiatky), stálo by za zváženie uložiť ich na pozadí v novej inštancii Excelu, ktorá sa síce na začiatku dlhšie otvára (ako nový zošit), no je skrytá, a rýchlejšia. A mohol by Vám bežať aj progres v StatusBar-e.
Příloha: zip45171_listy-do-samostatnych-souboru.zip (20kB, staženo 5x)
citovat
#045180
avatar
Skúste na kópii dát.
Ak by išlo o viac listov (desiatky), stálo by za zváženie uložiť ich na pozadí v novej inštancii Excelu,


Díky, vyzkouším.
Jedná se (v současnosti) o 5 listů. Max to vidím do 10.citovat
#045182
avatar

elninoslov napsal/a:

Skúste na kópii dát.
...

Upraveno, odzkoušeno.
Pracuje bezchybně.
Děkuji citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura III

Oblíbený formulář Faktura byl vylepšen a rozšířen. Formulář faktura III
Více se dočtete zde.

Aktivní diskuse