Moderatori: Anthony47, Flash30005
RetVal = ShellExecute(vbNull, "Print", "C:\Users\UTENTE\DIRECTORY\NomeDocumento.pdf", "", "", vbNormalFocus)
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
ThisWorkbook.Close savechanges:=False
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
MsgBox ("Il file non va salvato; usare il pulsante per salvare in formato pdf")
End Sub
Ho provato diverse soluzioni ma sono riuscito solo a stampare con i campi compilati ma non salvare, sono riuscito a salvare in pdf ma non mi stampa.....
ho provato ma non mi funziona niente, non salva, non stampa, non converte in pdf e non si chiude.
Sub Macro1()
'Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
' 'Dim objPDFCreator As PDFCreator.clsPDFCreator '>> Early Bind
Dim objPDFCreator '<<< Late Bind
Dim Perc As String
Dim Nome As String
'
Nome = "24-04-2015-17-38.pdf" 'Worksheets("ORIGINALE").
Perc = ThisWorkbook.Path
'
On Error Resume Next
If Dir(Perc & Nome) = Nome Then Kill (Perc & Nome)
Shell "taskkill /f /im PDFCreator.exe", vbHide
Application.Wait (Now + TimeValue("0:00:05"))
On Error GoTo 0
'
'Set objPDFCreator = New PDFCreator.clsPDFCreator '>>>
Set objPDFCreator = CreateObject("PDFCreator.clsPDFCreator") '<<
aaa1 = objPDFCreator.cProgramIsRunning
With objPDFCreator
.cStart "/NoProcessingAtStartup"
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = Perc
.cOption("AutosaveFilename") = Nome
.cOption("AutosaveFormat") = 0
aaa = .cOption("AutosaveFilename")
.cVisible = False
.cClearCache
End With
'Area2 = "D3,D6,J6,D8,D11,C27,G27,K27,E29,D32,D35,E47"
For Each cella In Range(Area2)
If cella.Value = "" Then
Application.ScreenUpdating = True
MsgBox Prompt:="La cella " & cella.Address & " è vuota! ", _
Buttons:=vbCritical, _
Title:="Avvertimento!"
cella.Select
'Errore = 1
Exit Sub
End If
ActiveSheet.PrintOut Copies:=1, ActivePrinter:="PDFCreator" 'stampa "Foglio"
objPDFCreator.cPrinterStop = False
'attesa disponibilita' file finale
Do
DoEvents
Loop Until Dir(Perc & Nome) = Nome
'
'clear finale oggetto e kill processo
Set objPDFCreator = Nothing
Shell "taskkill /f /im PDFCreator.exe", vbHide
'RetVal = ShellExecute(vbNull, "Print", "C:\Users\UTENTE\DIRECTORY\NomeDocumento.pdf", "", "", vbNormalFocus)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
MsgBox ("Il file non va salvato; usare il pulsante per salvare in formato pdf")
RetVal = Etc etc
End Sub
Anthony ha scritto:Per salvare il file in formato pdf ti bastera' registrare una macro mentre esegui un Salva con Nome, scegliendo il tipo di file = Pdf.
bsth ha scritto:Non effettua nessuna operazione
Anthony ha scritto:Allora ripartiamo da zero...
Per salvare il file in formato pdf ti bastera' registrare una macro mentre esegui un Salva con Nome, scegliendo il tipo di file = Pdf.
In questa fase userai un nome fisso; poi pubblichi il codice registrato e descrivi quale regola vuoi adottare per impostare il nome file e noi faremo le modifiche al codice per salvare direttamente col nome file desiderato.
Prova a integrare la macro con le istruzioni che ti avevo gia' dato per la stampa, lavorando sempre coil nome file fisso; devi inserire, dopo il salvataggio come pdf, l' istruzione RetVal = Etc etc e inserire in cima al modulo la dichiarazione della funzione ShellExecute.
Collauda la macro cosi' modificata, e allegaci il codice con l' indicazione dell' esito del tuo collaudo.
In risposta bsth ha scritto:Non effettua nessuna operazione [. . .]
Ok, hai la nostra approvazione (che serve a poco), vai avanti....è quindi mia volontà semplificare il più possibile le operazioni
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Sub Macro100()
'by Anthony
Sheets("MioFoglio").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Utente1\Directory1\pippo_prova_B50429.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
ActiveWorkbook.Close savechanges:=False
'
RetVal = ShellExecute(vbNull, "Print", "C:\Users\Utente1\Directory1\pippo_prova_B50429.pdf", "", "", vbNormalFocus)
'
Workbooks.Open Filename:="C:\Users\Utente1\Directory2\NomeFile.xlsm"
'
End Sub
Workbooks.Add Template:= "C:\Percorso\completo\delModello\MioModello.xltx"
Anthony47 ha scritto:Ok, hai la nostra approvazione (che serve a poco), vai avanti....è quindi mia volontà semplificare il più possibile le operazioni
Se pero' per andare avanti chiedi anche il nostro aiuto allora dovresti leggere che cosa ti scriviamo e cercare di eseguirlo; salvo che non pensi che lo facciamo per farti perdere tempo nel qual caso ci ignori totalmente e non succede niente.
Ora, in un messaggio successivo a quello che hai citato, io ti scrissi una serie di cose che avresti dovuto fare, concludendo "poi pubblichi il codice registrato e descrivi quale regola vuoi adottare per impostare il nome file e noi faremo le modifiche al codice per salvare direttamente col nome file desiderato".
Poiche' pero' pensi che sia meglio che noi facciamo il lavoro scemo e tu fai quello sofisticato allora ho seguito io le mie istruzioni, arrivando a questo codice:Ora lo devi personalizzare con i dettagli che non hai voluto svelarci.
- Codice: Seleziona tutto
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Sub Macro100()
'by Anthony
Sheets("MioFoglio").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Utente1\Directory1\pippo_prova_B50429.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
ActiveWorkbook.Close savechanges:=False
'
RetVal = ShellExecute(vbNull, "Print", "C:\Users\Utente1\Directory1\pippo_prova_B50429.pdf", "", "", vbNormalFocus)
'
Workbooks.Open Filename:="C:\Users\Utente1\Directory2\NomeFile.xlsm"
'
End Sub
La macro da eseguire e' Macro100.
Il codice va inserito in un modulo vuoto del personal.xlsm (o .xlsb) e poi va agganciato a un pulsante che inserirai sul foglio di lavoro.
Ciao
non riesco a capire dove devo inserire tra questi comandi tutti i riferimenti delle caselle da compilare obbligatoriamente
Con un solo comando il file viene salvato in pdf con un nome composto dalle informazioni all'interno di una casella+data+ora del momento della compilazione all'interno di una cartella definita. Dopo di che viene inviato ad una stampante (non importa che sia necessariamente il pdf ad essere inviato in stampa ma il modulo che si è compilato e non importa se mi inverte le due operazioni cioè prima stampa e poi converte), alla fine il file viene chiuso senza il salvataggio dei dati riportati nei campi obbligatori. Una nuova compilazione richiederà poi una riapertura del documento dall'icona predefinita.
Torna a Applicazioni Office Windows
Macro modifica date scelta periodo Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 11 |
Supporto per sviluppo macro VBA Ordinare per data Autore: Carletto Ribolla |
Forum: Applicazioni Office Windows Risposte: 3 |
Codice VBA per stampare UserForm attiva Autore: Carletto Ribolla |
Forum: Applicazioni Office Windows Risposte: 8 |
Macro per aprire file salvato su sharepoint Onedrive Autore: marcopont |
Forum: Applicazioni Office Windows Risposte: 2 |
Visitano il forum: Francesco6918 e 34 ospiti