Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel 2010 uložení jako obrázek pomocí vba

Zdravím,
potřeboval bych poradit, mám list v excelu 2010 a potřeboval bych při spuštění makra aby tento list uložil jako obrázek (.png) pomocí vba.

Přikládám obrázek toho co jsem sehnal na internetu, funguje to ale problém je v tom že při otevření obrázku v malování, Windows prohlížeč fotografií nebo Photo Gallery při přiblížení dochází nejspíš ke kompresi a je to docela špatně čitelné. Řešení jsem našel otevřít to např. v IE. Což by nebyl zas takový problém, tyto obrázky posílám kolegům v práci a nevím zda by každý pochopil aby to otevíral v IE, defaultně se to otevírá v jednom ze tří jmenovaných programů.

Co přesně potřebuju ... potřebuju jestli by při ukládání šla zlepšit kvalita (rozlišení ? ) aby když to otevírají v malování, Windows prohlížeč fotografií nebo Photo Gallery při přiblížení byl text čitelný.

Hledal jsem na googlu, ale jelikož se syntaxi v vba nemám žádné zkušenosti tak na to čumím jako tele.

Předem děkuji za pomoc.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
při otevření obrázku v malování, Windows prohlížeč fotografií nebo Photo Gallery při přiblížení doch…
JoDiK 08.02.2016 18:04
JoDiK
Máš pravdu, asi jsem po těch hodinách čumění do PC viděl to co není :D Jak to teda mám udělat ? ed…
Deadfrey 09.02.2016 08:23
Deadfrey
Divné, že by export do PDF osekal tabulku, to se mi ještě fakt nestalo... Zkus pro jistotu definovat…
Zdenál 09.02.2016 11:21
Zdenál
Tohle jsme právě už zkoušel. Zkoušel jsem použit: Aktivní listy Výběr (označil jsem tabulku) u obo… nový
Deadfrey 09.02.2016 12:28
Deadfrey
V Rozložení stránky -> Měřítko je defaultně 100%, když ale snížím na 55% a méně tak už to jde vidět… nový
Deadfrey 09.02.2016 12:59
Deadfrey
Ok takže na rozložení jsme už teda přišel, teď bych potřeboval kód, který spočítá ve které poslední… nový
Deadfrey 09.02.2016 14:25
Deadfrey
Ty opravdu VBA nehovíš. Už jsem tady 2x psal, že ten kód, co jsi sem dal - tedy subroutina JPG_tisk… nový
Zdenál 09.02.2016 16:32
Zdenál
Tady máš ten můj testovací kód, který funguje - jen si pohlídej rozsah co se má exportovat, jestli t… nový
JoDiK 10.02.2016 07:47
JoDiK
Tu velikost jsem ošetřil tak, že jsem v Excelu nastavit: Tisk -> měřítko -> přizpůsobit všechny slou… nový
Deadfrey 10.02.2016 08:32
Deadfrey
Makro jsem zkusil, funguje dobře, ale kvalita obrázku je velice mizerná. Asi bude opravdu nejlepší p… nový
Deadfrey 10.02.2016 08:38
Deadfrey
U mě ta kvalita odpovídá nastavená lupy v Excelu (ono to defakto odchytává v kvalitě zobrazení na mo… poslední
JoDiK 10.02.2016 10:31
JoDiK

při otevření obrázku v malování, Windows prohlížeč fotografií nebo Photo Gallery při přiblížení dochází nejspíš ke kompresi a je to docela špatně čitelné. Řešení jsem našel otevřít to např. v IE

Chceš říct, že jeden a tentýž obrázek otevřený v těch třech programech vypadá jinak než v IE? Jakože ty tři ten obrázek zmrší? Nebo naopak IE z nekvalitního obrázku vytáhne víc než ty tři ostatní? Tak to bych rád viděl... Zkus to nějak odchytit a ukázat... Taky přilož ten uložený obrázek PNG.

Každopádně když jsem testoval jak excel převádí na obrázek, tak se zdá, že při zvolení varianty Format:=xlBitmap jsou výsledky lepší než pro Format:=xlPicture - má to o něco větší rozlišení a zřejmě používá antialiasing nebo něco podobného pro vylepšení obrazu.

Format:=xlPicture
[http://pc.poradna.net/file/view/25068-xls-picture- png]

Format:=xlBitmap
[http://pc.poradna.net/file/view/25069-xls-bitmap-p ng]

Tohle jsme právě už zkoušel. Zkoušel jsem použit:

Aktivní listy
Výběr (označil jsem tabulku)

u obou byl stejný výsledek, PDF oseká excel vždy po 5 sloupcích.

edit. Rozložení stránek v pdf je podle toho jak je to rozložené v Excelu, stránku (šířku) zabírá 5 sloupců, nastaveno na A4. Lze to přenastavit, aby to ignorovalo rozložení/rozměry A4, tudíž by šírka stránky byla ,,neomezená".

Ty opravdu VBA nehovíš.
Už jsem tady 2x psal, že ten kód, co jsi sem dal - tedy subroutina JPG_tisk - definuje oblast, kterou chceš převést do obrázku. Copak asi tedy znamenají proměnné LastRow a LastCol?
Ano, jde o poslední obsazený řádek a poslední obsazený sloupec. Po provedení:

Set rng = Range("A1", Cells(LastRow, LastCol))

obsahuje proměnná rng odkaz na celou oblast s daty.

Tady máš ten můj testovací kód, který funguje - jen si pohlídej rozsah co se má exportovat, jestli ti to bere jen pět sloupců a ty tam máš ještě další popsané sloupce, zkontroluj, jestli jsou obsazené i v prvním řádku! Případně si najdi kód, který prohledá celou tabulku a najde ten rozsah lépe...

Sub ObrazekDoSouboru()

    strLocation = "D:\"
    strFileName = "TestExcel.png"    'Here you put the name of your png file
    Dim rng As Excel.Range

'Set rng = Range("A1:O44")  buď použij rozsah napevno
'Find the last used row in a Column: column A in this example
'Nebo si ho nech vyhledat podle poslední obsazené buňky v řádku 1 a poslední buňky ve sloupci A

Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
'MsgBox LastRow
'Find the last used column in a Row: row 1 in this example
Dim LastCol As Integer
With ActiveSheet
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With
'MsgBox LastCol

Set rng = Range("A1", Cells(LastRow, LastCol))

    rng.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
With ActiveSheet.ChartObjects.Add(Left:=rng.Left, Top:=rng.Top, Width:=rng.Width, Height:=rng.Height)
        .Name = "ChartForExport"
        .Activate
    End With
    ActiveChart.Paste
    ActiveSheet.ChartObjects("ChartForExport").Chart.Export Filename:=strLocation & "\" & strFileName, Filtername:="png"
    ActiveSheet.ChartObjects("ChartForExport").Delete

End Sub

Tu velikost jsem ošetřil tak, že jsem v Excelu nastavit: Tisk -> měřítko -> přizpůsobit všechny sloupce na jednu stránku (všiml jsem si že PDF vychází z toho jak ej to rozložené na tisk)

Btw. PDF se dokáže zjistit velikost (rozsah) kam až sahá ten sešit, ale vychází z toho co bylo změněno/upraveno, čili šéf, tam má předpřipravenou tabulku (ohraničení) až někam do nekonečna, a pdf to bere jako že tam něco je, takže tam do toho vezme i to ohraničení tabulky kde nejsou data.

Podívám se na ten tvůj kód, uvidíme jak to bude fungovat.

Zatím moc díky.

Zpět do poradny Odpovědět na původní otázku Nahoru