Condividi:        

Apertura file excel programmata

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Apertura file excel programmata

Postdi BG66 » 15/11/16 11:55

Ciao a tutti,
Ho un file excel sul server che vorrei si aprisse alle ore 7:00 del mattino:
a)creasse un pdf di un foglio di lavoro definito
b) lo spedisse email a due indirizzi pre-definiti
c) chiudesse il file excel.

E' fattibile? Esiste una "traccia" di script che possa seguire?

Grazie in anticipo
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Sponsor
 

Re: Apertura file excel programmata

Postdi alfrimpa » 15/11/16 12:10

Ciao BG66

Secondo me dovresti sfruttare l'Esecuzione automatica di Windows (se fai una ricerca con Google trovi diversi link).

Poi nel file di Excel in questione in Workbook_Open dovresti mettere le istruzioni VBA per eseguire le operazioni a), b) e c)
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Apertura file excel programmata

Postdi BG66 » 15/11/16 12:15

Ciao Alfredo,
grazie per la pronta risposta. Inizio la ricerca.
Nel frattempo, hai una traccia da farmi seguire per i punti a - b- c ?

Grazie se puoi.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Apertura file excel programmata

Postdi alfrimpa » 15/11/16 13:36

Ciao BG

Allega il tuo file di Excel di esempio e cerchiamo di risolvere questa parte del problema.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Apertura file excel programmata

Postdi alfrimpa » 15/11/16 14:03

Un'altra cosa: il pdf con quale nome (e dove) deve essere salvato?
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Apertura file excel programmata

Postdi BG66 » 15/11/16 15:22

Ciao Alfredo,
non sapendo se era fattibile quanto richiesto il file che allego è letteralmente allo stato embrionale.
https://www.dropbox.com/s/69guf8azbfecv0x/1_PRODUZ_2016_email.xlsm?dl=0
In pratica:
a) nel foglio email -> genero l'email
b) nel foglio D_week -> genero PDF
e soprattutto, al momento, non sono collegati tra di loro.
c) la presenza di una macro normalmente chiede "l'abilitazione modifica" all'apertura del file. Quindi come può la macro attivarsi se in quel momento il pc NON è presidiato?
d) la mia idea è di non salvare il pdf ma di allegarlo direttamente alla email (ho trovato nel forum un thread di Anthony sull'utilizzo del PDF creator che penso e spero di poter usare a questo scopo)

Comunque se ritieni, giustamente, che il tuo aiuto in questa fase sia prematuro, posso lavorarci ancora qualche giorno e poi riaggiornarci.
Fammi sapere qual è il tuo pensiero.

Grazie ancora.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Apertura file excel programmata

Postdi alfrimpa » 15/11/16 15:32

Ciao BG

Per il momento può andar bene anche così ma mi chiedo il perché di questa macro CreaPDF

Codice: Seleziona tutto
Sub Createpdf()
Dim pdff As Object
Const pdlocation As String = "Desktop"
Dim szDesktopPath As String

Set pdff = CreateObject("WScript.Shell")
szDesktopPath = pdff.SpecialFolders(pdlocation)
 
destfile = szDesktopPath & ActiveSheet.Name

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
destfile, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub


Tranne le ultime tre righe che sono quelle classiche perché usi

Codice: Seleziona tutto
Set pdff = CreateObject("WScript.Shell")


Dalla versione 2007 Excel salva in PDF senza particolari problemi.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Apertura file excel programmata

Postdi BG66 » 15/11/16 16:47

Ciao Alfredo,
in realtà ho adattato quanto trovato in rete e siccome funzionava non mi sono fatto troppe domande!!
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Apertura file excel programmata

Postdi alfrimpa » 15/11/16 17:02

Ah ok
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Apertura file excel programmata

Postdi BG66 » 16/11/16 22:52

Ciao Alfredo,
hai "sviluppato" qualche dritta su come posso proseguire?

Grazie in anticipo
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Apertura file excel programmata

Postdi alfrimpa » 16/11/16 22:57

No non ti avevo più sentito.

Domani cerco di proporti qualcosa.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Apertura file excel programmata

Postdi alfrimpa » 17/11/16 12:45

Ciao BG

Quindi ricapitolando la macro dovrebbe

1) Creare il pdf del foglio D_Week
2) Spedire il pdf all'Indirizzo specificato in email cella C3 con il testo contenuto in C7
3) Cancellare il pdf creato in precedenza

E' corretto?
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Apertura file excel programmata

Postdi BG66 » 17/11/16 14:41

Ciao Alfredo,
correttissimo.
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Apertura file excel programmata

Postdi alfrimpa » 17/11/16 16:02

Ciao BG

Comincia a provare con il file che ti allego dove ho inserito la seguente macro

Codice: Seleziona tutto
Sub Inviamail()
Dim OutlookApp As Outlook.Application
    Dim MItem As Object
    Dim Recipient As String, Subj As String
    Dim Msg As String, Fname As String
    Dim myPath As String
    myPath = "C:\Excel\" '<=== da modificare con il tuo percorso
    On Error Resume Next
    Recipient = Worksheets("email").Range("c3").Value
    Subj = ""
    Msg = Worksheets("email").Range("c7").Value
    Fname = myPath & "D_Week" & ".Pdf"
    Worksheets("D_Week").ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=Fname
    Set OutlookApp = New Outlook.Application
    Set MItem = OutlookApp.CreateItem(olMailItem)
    With MItem
      .To = Recipient
      .Subject = Subj
      .Body = Msg
      .Attachments.Add Fname
      .Display
      '.Send
    End With
    Set OutlookApp = Nothing
End Sub


http://www.filedropper.com/bg66

Sul foglio "email" c'è un pulsante con la macro associata.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Apertura file excel programmata

Postdi BG66 » 20/11/16 07:03

Ciao Alfredo,
scusa per il ritardo nella risposta ma su tutti i pc aziendali è montato thunderbird e quindi ancora non sono riuscito a provarlo.
E' qualche giorno che provo ad adattarlo ma al momento con scarsissimo successo.

A presto...spero!!
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Apertura file excel programmata

Postdi BG66 » 27/11/16 09:46

Ciao Alfredo,
ci ho messo oltre 7 giorni ma sono riuscito a "recuperare" uno script che funziona con thunderbird.
Ora, se puoi, ho bisogno del tuo aiuto per adattarlo nella parte indicata.
In breve: come dirgli che invece di andare a prendere dei campi specifici deve farmi un pdf del foglio "D_week" ?
Codice: Seleziona tutto
Sub SendMailTB()
Dim invio As String
Dim dest As String
Dim obj As String
Dim testo As String
Dim dati As String


dest = Sheets("email").Range("c3") 'cella in cui appare l'indirizzo dei/del destinatari/io
obj = "prova invio"
'-----------------------------
[b]' immagino che quello che segue è da correggere ma come?[/b]
uRg = ActiveSheet.Cells(Rows.Count, "AJ").End(xlUp).Row
For i = 8 To uRg
testo = testo & Range("AJ" & i).Text & " " & Range("AK" & i).Text & "<br>"
Next i
'------------------------------

invio = "C:\PostaElettronica\thunderbird.exe"  'percorso completo dell'avvio di Thunderbird
    'per esempio: "C:\Program Files\Mozilla Thunderbird\thunderbird.exe"


dati = " -compose " & "to=" & dest & "," & "subject=" & obj & "," & "body=" & testo


Shell invio & dati, vbNormalFocus
End Sub


Grazie
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Apertura file excel programmata

Postdi BG66 » 27/11/16 22:40

Ciao,
penso di aver recuperato il tempo perduto :lol::

1) Creo pdf usando PDFCreator (al momento non salva in automatico!!):
Codice: Seleziona tutto
Sub Createpdf()
Dim pdff As Object
Const pdlocation As String = "Desktop"
Dim szDesktopPath As String
'****
' get the desktop location
'****
Set pdff = CreateObject("WScript.Shell")
szDesktopPath = pdff.SpecialFolders(pdlocation) 
destfile = szDesktopPath & ActiveSheet.Name
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
destfile, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub


2) Poi scelgo il PDF da allegare e "chiamo" il prossimo script:
Codice: Seleziona tutto
Sub Scegli_File_pdf()
Dim sAllegato As String
ChDir "C:\" 'DIRECTORY DOVE SI APRIRà LA FINESTRA DI DIALOGO
sAllegato = Application.GetOpenFilename("File pdf, *.pdf", , "Scegli il file pdf da allegare")
If sAllegato = "Falso" Then
    MsgBox "Operazione annullata", vbExclamation
Else
   Call sendmailTH(sAllegato)
End If
End Sub


3) Invio il tutto con Thunderbird ( resta un mal funzionamento: anche se presente Application.Quit -> chiude il file ma non il programma) :
Codice: Seleziona tutto
Sub sendmailTH(ByVal sAllegato As String)
Dim BodyMsg As String, Indirizzo As String, Oggetto As String, PercorsoPdf As String
    BodyMsg = "Spett.le uff.programmazione," _
    & vbCrLf & "in allegato report giornaliero" _
    & vbCrLf & vbCrLf & "Buon Lavoro" _
    & vbCrLf & "In attesa di un Vostro riscontro, ringraziamo per l’attenzione e Vi porgiamo i nostri migliori saluti." _
    & vbCrLf & vbCrLf & "GB"
    Indirizzo = Range("M12").Value
    Oggetto = "Report produzione giornaliera"
    PercorsoPdf = sAllegato
    Shell "C:\PostaElettronica\thunderbird.exe -compose " _
        & Chr$(34) & "to='" & Indirizzo & "',subject='" & Oggetto & "',body='" & BodyMsg _
        & "',attachment='" & PercorsoPdf & "'" & Chr$(34), vbNormalFocus
    Application.Wait Now + TimeValue("00:00:03")
    SendKeys "^{ENTER}"
    ActiveWorkbook.Close SaveChanges:=True
    Application.Quit
End Sub


Sicuramente si può ottimizzare e snellire ma qui devono entrare in gioco...i duri del VBA anche e soprattutto per l'operazione finale.
Ossia: Come posso programmare che l'intera operazione venga fatta ad un'orario definito e senza presidio umano?
In poche parole vorrei che alle ore 6.30 ( la giornata produttiva finisce alle ore 6.00 ) si aprisse il file, creasse il pdf e lo inviasse in automatico.

Grazie
https://www.dropbox.com/s/56knhy1aon6b26t/Email%20by%20Alfredo%20%28TH%29V1%2B.xlsm?dl=0
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Apertura file excel programmata

Postdi alfrimpa » 28/11/16 12:49

Mi spiace gene ma non so aiutarti.

So che ci sono dei tool (al limite Windows) per l'esecuzione automatica ma non avendo mai avuto tale tipo di necessità di più non saprei dirti.

Prova a fare ricerche in rete.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Apertura file excel programmata

Postdi BG66 » 28/11/16 12:56

Ciao Alfredo,
grazie per la risposta......in rete non ho trovato granchè....speriamo nel guru Anthony.
Mentre hai qualche dritta sulle due "imperfezioni" nelle macro:
1) per salvare il pdf nella macro Createpdf
2) per chiudere anche Excel nella macro sendmailTH
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Apertura file excel programmata

Postdi Anthony47 » 29/11/16 02:04

Difficile entrare in una discussione al 18° messaggio... Proviamo lo stesso

Poiche' per fare tutto serve un Pc acceso allora supponiamo che sul Pc sia attivo anche il programma Excel.
Io direi di partire con un file che chiamiamo ad esempio GUIDA.xlsm, che conterra' gran parte delle macro.
Questo file andra' installato nella directory xlstart (sul mio pc corrisponde a C:\Users\UTENTE\AppData\Roaming\Microsoft\Excel\XLSTART) e conterra' una macro di workbook_open del tipo
Codice: Seleziona tutto
Private Sub Workbook_Open()
    next7am = Int(Now) + 1 + TimeSerial(6, 30, 0)
    Application.OnTime next7am, "MainMacro"
End Sub

La directory scelta assicura che il file venga aperto all'avvio di Excel; la macro di Workbook_Open pianifica la prima esecuzione del ciclo, che sara' contenuto in una macro MainMacro.

La macro che salva in formato pdf la puoi registrare autonomamente: partendo dal file Guida.xlsm, avvii la registrazione della macro, attivi il file e il foglio da cui creare il pdf, fai un File /Salva-con-Nome, e come formato scegli "pdf"; assegni un nome fisso al documento; riattivi il file Guida.xlsm

La macro che invia l'email con l'allegato ce l'hai gia'; toglile pero' dal forndo le istruzioni ActiveWorkbook.Close SaveChanges:=True / Application.Quit che in parte metteremo nella MainMacro complessiva:
Codice: Seleziona tutto
Sub MainMacro()
'genera il pdf:
Call MacroPerGenerarePdf        '<<< Il nome della macro autoregistrata
Application.Wait (Now + TimeValue("0:00:05"))
'preliminari + invio mail:
Windows("IlFileCheDeveEssereAttivato.xlsm").Activate
Sheets("IlFoglioCheDeveEssereAttivato").Select
Call sendmailTH("IlPercorsoCompletoDelFilePdf.pdf")
'Schedula per domani:
next7am = Int(Now) + 1 + TimeSerial(6, 30, 0)
Application.OnTime next7am, "LaMacroDiInvioMail"
'Altre operazioni che devono essere fatte?
ActiveWorkbook.Close SaveChanges:=True        '*** Vedi Testo
End Sub


Quello che non mi e' chiaro e' se il file da cui generare il pdf e' gia' aperto oppure e' chiuso alle 6:30 del mattino; se il file e' chiuso allora la sua apertura sara' da fare nel corso della registrazione della macro che genera il pdf, e la sua chiusura si fara' con l'istruzione marcata *** in MainMacro; se invece il file e gia' aperto allora l'istruzione *** sara' da cancellare.

Spero di non aver destabilizzato quanto gia' fatto finora...
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Apertura file excel programmata":


Chi c’è in linea

Visitano il forum: Nessuno e 68 ospiti