< návrat zpět

MS Excel


Téma: Tisk kliknutím na obrázek rss

Zaslal/a 8.4.2015 16:13

Jde nějak udělat když vložím ikonku tiskárny do sešitu, aby kliknutím na ikonku se provedl příkaz CTRL+P = tisk sešitu ? DĚKUJI

Zaslat odpověď >

Strana:  « předchozí  1 2
icon #024490
avatar
For má byť ukončené Next, čiže miesto x=x+1 by tam teoreticky, aby bola dodržaná syntax VBA, malo stáť Next x. Ale ani to nezaručí, že sa doberieš kýženého výsledku. Každopádne, makro takto napísaným cyklom prebehne korektne, je možné vidieť, že na konci sa zobrazí hláška "makro pokracuje". Sub ExecutePrint()
Dim x As Byte
For x = 1 To 3
Sheets(Array("Sheet1", "Sheet3")).Select
Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
Next x
MsgBox "makro pokracuje"
End Sub
Ako som ale zmienil, pravdepodobne to nie je to, čo chceš dosiahnuť, síce tuším, o čo sa snažíš, ale zrozumiteľné formulovanie problému ponechám na tebe.citovat
#024491
avatar
to AL: samo, že tam je Next x (jen jsem to špatně opsal :-)

Díky za MsgBox.. přišel jsem na to, že v cyklu makro "nečeká" na akci uživatele (potvrzení tisku) a projede cyklus do konce. Takže v reálu se vytisknou jen první formuláře z cyklu.
Jak tedy donutit makro aby počkalo na potvrzení tisku, vytisklo formulář a pokračovalo v cyklu.
Tohle makro fungovalo na Excel 2003 bez problémů :-(
Možná to jde nějak jinak...
Podstatou je, že potřebuji zkontrolovat tiskárnu, způsob tisku... odsouhlasit tisk a čekám na další formulář (PrintPreview fungovalo v 2003 bez problémů).citovat
#024492
avatar
Ab takto nejako si to nechcel?
Sub ExecutePrint()
Dim x As Worksheet
For Each x In Sheets(Array("Hárok1", "Hárok3"))
x.PrintPreview ' x.printout
Next x
MsgBox "makro pokracuje"
End Subcitovat
icon #024493
avatar
George, myslím, že nesprávne používaš termín cyklus.
Sheets(Array("Sheet1", "Sheet3")).Selectnie je cyklus. Makro najprv selektne vybrané listy (nejedná sa ale o cyklus) a následne zobrazí ich náhľad pred tlačou. Nič iné po ňom nechceš (žiadnu inú inštrukciu si doňho nenapísal) a tým pádom ani nič iné nerobí. Takže je to stále nepresne popísaný problém. Riešenie nájdeš v marjankajovom kóde - ten skutočne používa cyklus.citovat
#024502
avatar
George, myslím, že nesprávne používaš termín cyklus.
Sheets(Array("Sheet1", "Sheet3")).Selectnie je cyklus.

Ale já se bavím o cyklu
For x = 1 To 3
Sheets(Array("Sheet1", "Sheet3")).Select
Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
Next x
citovat
icon #024504
avatar
Naozaj nechápem, prečo 3x po sebe potrebuješ vykonať jednu a tú samú akciu, t.j. vybrať 2 vždy tie isté listy :(. Pokiaľ trváš na cykle, pozri sa na to, čo sem dal marjankaj. Obávam sa, že ja ti viac v tejto veci nedokážem pomôcť.citovat
#024506
avatar
Nedostal jsem se k rychlejší odpovědi...
Popišu to jak to FUNGOVALO na Win XP a Excel 2003 (současný systém Win7 profesoinal a Excel 2010)
1. Personální tabulka, co řádek to údaje o osobě
2. určím si, že potřebuji tisknout řádky 101-103 (3 formuláře o dvou výtiscích - 6listů)
3. z tabulky se načtou údaje o osobě 101 do formuláře (list "tisk01" a list "tisk02" = výtisk č.1 a č.2. - liší se v pár položkách)
4. vyvolá se pokyn k tisku (Sheets("tisk01").PrintPreview)
5. zkontroluji udaje, navolím tiskárnu (může být místní, síťová), oboustranný tisk a potvrdím -> vytiskne se osoba101 výtisk č.1
6. (Sheets("tisk02").PrintPreview) - totéž výtisk č.2
7. makro pokračuje - doplní do STEJNÉHO formuláře údaje o osobě 102 a provede se Preview...
8. osoba 103...
9. konec

V Excelu 2010 mi nefunguje PrintPreview (objevi se náhled a po stlačení Print vyskočí hláška "RT error 1004, Metoda PrintPreview třídy Worksheet selhala."
Možnost Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
se jevila jako funkční, jenže v případě zobrazení náhledu se makro nezastaví, rychle proběhnou náhledy osob 101, 102 a zastaví se až na 103. Můžu tedy vytisknout jedině poslední z vybraných osob.
Možna jdu na to špatně a existuje něco jednoduššího :-)
Potřebuji mít možnost volby tiskárny (parametrů) před tiskem a doplňovat do STEJNÝCH 2 listů různé udaje a ty tisknout.
Díky za nápady.citovat
icon #024508
avatar
Na Windows 7 Enterprise a Excel Professional Plus 2010 toto funguje - cyklus prebehne 3x a pokaždé vytlačí 2 listy:Sub ExecutePrint1()
Dim x As Worksheet, y As Byte
For y = 1 To 3
For Each x In Sheets(Array("Sheet1", "Sheet3"))
x.PrintPreview ' x.printout
Next x
Next y
MsgBox "makro pokracuje"
End Sub
Obávam sa, že bez toho, aby som videl tvoj vzorový súbor s kódom, tak sa mi asi nebude chcieť premýšľať nad tým, kde by mohol byť u teba zádrhel.citovat
#024509
avatar

AL napsal/a:

Obávam sa, že bez toho, aby som videl tvoj vzorový súbor s kódom, tak sa mi asi nebude chcieť premýšľať nad tým, kde by mohol byť u teba zádrhel.

Obávam sa, že ani neuvidíš. Určite je to tajné. 2citovat
#024613
elninoslov
Je v Exceli, tak ako v Delphi, nejak rozumne použiteľné FindWindows (FindWindowEx) ? Napadla ma takáto idea:
-Po odoslaní prvej "várky" sa spustí Timer (interval 1 sec) so slučkou, ktorý bude ukončený globálnym príznakom v nasledovnom teste
-Buď odchytať postupne okná, a nejako zistiť (ak to pôjde) názov alebo iný jednoznačný identifikátor okna s náhľadom tlače. HWND to nebude môcť byť, to bude stále iné.
-Alebo v týchto kontrolovaných oknách zisťovať existenciu nejakého buttonu či CommandBaru

Pochopili ste ma? Má niekto skúsenosti s odchytom FindWindow?

Je smutné, že v žiadnom z postupov tlače neponúka Excel Wait režim.

Skúšal som aj fintu s rekurzívnym spustením tlače z eventu BeforePrint, no zvnútra sa tlač nezavolá.

Na nete som našiel nejakú fintu so skrytým textom, ale to som nepochopil, tak preto mi to asi nefungovalo.

Potom už jedine blbé riešenie s pauzou napr. 10 sec, pretože Excel proste po naštartovaní tlačovej úlohy (nie tlače) makro nezastaví :(citovat

Strana:  « předchozí  1 2

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje