Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Tlac z excel (makro)

Mam makro v xls, kde otvorim dalsi subor, z neho si nacitam nejake hodnoty a pred zavretim ho poslem na tlaciaren Range("A1:H66").PrintOut Copies:=1. Mam nastavene , mam nastavene aj Application.ScreenUpdating = False a Application.DisplayAlerts = False a napriek tomu mi obrazovka preblikava s oznamom okna o poslani na tlaciaren.
Da sa tomu nejak zamedzit?

Předmět Autor Datum
Ty 2 prepinače pouze zakážou překreslování Excelu a zobrazení chybových zpráv v Excelu. Nezabrání tv…
Jan Fiala 31.03.2022 14:04
Jan Fiala
Dik, skusim to na tu chvilku, ono je to tak, ze v cykle otvaram x suborov, napr za 04 je ich 64, z k…
truhlik 31.03.2022 14:15
truhlik
https://stackoverflow.com/questions/67219/how-do-you-prevent-printing-dialog-when-using-excel-printo…
robert13 31.03.2022 16:51
robert13
Doplňujúce info: Môj predchádzajúci link priamo uvádza kód, ktorý nefunguje, ale v ďalšej diskusii j…
robert13 01.04.2022 08:02
robert13
Dik, toto som nasiel, ale mne nefunguje. Je to presne ako normalne, okna preblikavaju, len neobsahuj…
truhlik 01.04.2022 08:10
truhlik
Áno, sorry, teraz som si tiež všimol, že na okamih preblikne prázdne okienko... :-( https://www.mre…
robert13 01.04.2022 08:11
robert13
Vdaka vsetkym za snahu, akoze viem s tym zit, len je to nie pekne a zdrzuje to vykonavanie skriptu .…
truhlik 01.04.2022 12:26
truhlik
A což takhle to poriešiť fintou: Nebudeš tlačiť x súborov po jednom, ale načítaš dávku súborov, makr…
robert13 01.04.2022 14:58
robert13
No nie az tak doslova, tam by bol zase problem tak narychlo si spomeneiem napriklad na strankovanie,…
truhlik 01.04.2022 17:35
truhlik
Tak sa o dokonalosť ani nesnaž, dokonalé môžu byť len ženy :-D:-D:-D:-p Veď ono Ťa niečo ešte napadn… poslední
robert13 01.04.2022 18:49
robert13

Ty 2 prepinače pouze zakážou překreslování Excelu a zobrazení chybových zpráv v Excelu. Nezabrání tvému dialogu.
Zkus si před odesláním na tiskárnu ještě pohrát s
Application.Visible = False

a pak ji zase zobrazit. Možná to bude méně rušivé, pokud ji navíc nebudeš potřebovat po tisku zobrazit, bude to jednodušší.

Dik, skusim to na tu chvilku, ono je to tak, ze v cykle otvaram x suborov, napr za 04 je ich 64, z kazdeho nieco vytiahnem, a ked ho uz mam otvoreny, tak ho aj tlacim . . .

Tak nie, to sposobi ze cela aplikacia zmizne, objavi sa okno poslania suboru na tlaciaren a nasledne ked to zase povolim tak sa objavi aplikacia :-(

Doplňujúce info:
Môj predchádzajúci link priamo uvádza kód, ktorý nefunguje, ale v ďalšej diskusii je uvedený ďalší link, ktorého riešenie funguje:
https://www.mrexcel.com/board/threads/hide-now-printing-in-vba.13057/
Mám odskúšané

Option Explicit

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'// The SendMessage function sends the specified message to a window or windows.
'// The function calls the window procedure for the specified window and does not
'// return until the window procedure has processed the message.
'// The PostMessage function, in contrast, posts a message to a thread’s message
'// queue and returns immediately.
'//
'// PARAMETERS:
'//
'// hwnd
'// Identifies the window whose window procedure will receive the message.
'// If this parameter is HWND_BROADCAST, the message is sent to all top-level
'// windows in the system, including disabled or invisible unowned windows,
'// overlapped windows, and pop-up windows; but the message is not sent to child windows.

'// Msg
'// Specifies the message to be sent.

'// wParam
'// Specifies additional message-specific information.

'// lParam
'// Specifies additional message-specific information.

'//////////////////////////////////////////////////////////////////////////
'// The IsWindow function determines whether the specified window handle
'// identifies an existing window.
Private Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long
'// PARAMETERS:
'// hWnd
'// Specifies the window handle.

'//////////////////////////////////////////////////////////////////////////
'//
Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, _
lpRect As Long, ByVal bErase As Long) As Long

Private Declare Function UpdateWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function GetDesktopWindow Lib "user32" () As Long

Public Function fncScreenUpdating(State As Boolean, Optional Window_hWnd As Long = 0)
Const WM_SETREDRAW = &HB
Const WM_PAINT = &HF

If Window_hWnd = 0 Then
Window_hWnd = GetDesktopWindow()
Else
If IsWindow(hwnd:=Window_hWnd) = False Then
Exit Function
End If
End If

If State = True Then
Call SendMessage(hwnd:=Window_hWnd, wMsg:=WM_SETREDRAW, wParam:=1, lParam:=0)
Call InvalidateRect(hwnd:=Window_hWnd, lpRect:=0, bErase:=True)
Call UpdateWindow(hwnd:=Window_hWnd)
Else
Call SendMessage(hwnd:=Window_hWnd, wMsg:=WM_SETREDRAW, wParam:=0, lParam:=0)
End If

End Function


'-----------------------------
Sub PrintDirect()
fncScreenUpdating State:=False
ActiveWindow.SelectedSheets.PrintOut Copies:=1
fncScreenUpdating State:=True
End Sub
'-----------------------------

A což takhle to poriešiť fintou:
Nebudeš tlačiť x súborov po jednom, ale načítaš dávku súborov, makrom poriešiš zlúčenie všetkých potrebných dát do jedného výsledného súboru a ten dáš vytlačiť jediným povelom... Pokiaľ to máš systematické, nemal by byť problém a bolo by to než bys řekl švec... :-p

No nie az tak doslova, tam by bol zase problem tak narychlo si spomeneiem napriklad na strankovanie, niesu to surove data, ale predstav si kazdy subor povedzme ako vyplneny dotaznik . . . a ludova tvorivost si sem tam prida riadok, pripadne pise poznamky do dalsich stlpcov . . . do suborov nemozem zasiahnut, niesu moje :-(
Ale nieje to tke strasne, len som to chcel doviest k dokonalosti :-)

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