< návrat zpět
MS Excel
Téma: Kopirování tabulky do souboru
Zaslal/a GeorgeK 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
…
Stalker(2.12.2019 11:09)#045145 wsNew.PasteSpecial (xlPasteValues)
citovat
GeorgeK(2.12.2019 12:42)#045154 Stalker napsal/a:
wsNew.PasteSpecial (xlPasteValues)
Dík
citovat
GeorgeK(3.12.2019 7:52)#045168 Stalker napsal/a:
wsNew.PasteSpecial (xlPasteValues)
předčasná radost...
RunTime Error 1004: Method "PasteSpecial" of object "_WorkSheet" failed
citovat
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
GeorgeK(3.12.2019 8:53)#045170 elninoslov napsal/a:
Chcete aby som Vám to upravil nech to spraví všetky listy ?
Díky, pomoc určitě neodmítnu...
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
elninoslov(3.12.2019 12:25)#045171 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.
citovat
GeorgeK(4.12.2019 9:09)#045180 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
GeorgeK(4.12.2019 11:32)#045182 elninoslov napsal/a:
Skúste na kópii dát.
...
Upraveno, odzkoušeno.
Pracuje bezchybně.
Děkuji citovat