Creare a aprire File

di il
4 risposte

Creare a aprire File

Scusate se vi disturbo un'altra volta ma ho questo problema. Questo è il codice:

Private Sub Comando126_Click()

Dim App As Object
Dim Doc As Object
Dim NewPath As String
Dim NewFile As String
Dim strPath As String
Dim anno As Integer

anno = Year(Date)

strPath = "\\Server\z\01_GESTIONE AZIENDA\PREVENTIVI\" & CStr(anno)
strPath = strPath & "\P_" & [numero_offerta] & " " & [ragione_sociale] & "-" & [riferimento]

If Len(Dir("strPath\" & "P_" & Left([numero_offerta], 4) & "-" & Right([numero_offerta], 4) & ".docx")) > 0 Then

Else


Set App = CreateObject("Word.Application")
App.Visible = False

Set Doc = App.Documents.Open("\\Server\z\Gestionale Azienda\modulo_offerta.docx")

'..........

NewPath = strPath & "\"
NewFile = "P_" & Left([numero_offerta], 4) & "-" & Right([numero_offerta], 4)

'............
Doc.Bookmarks("Data").Select
App.selection.typetext "" & [data_offerta]

Doc.Bookmarks("numero_offerta").Select
App.selection.typetext "" & [numero_offerta]

Doc.Bookmarks("riferimento").Select
App.selection.typetext "" & [riferimento]


Doc.Bookmarks("ragione_sociale").Select
App.selection.typetext "" & [ragione_sociale]

Doc.Bookmarks("via").Select
App.selection.typetext "" & [via]

Doc.Bookmarks("cap").Select
App.selection.typetext "" & [cap]

Doc.Bookmarks("provincia").Select
App.selection.typetext "" & [sigla]

Doc.Bookmarks("comune").Select
App.selection.typetext "" & [Comune]

Doc.Bookmarks("mail").Select
App.selection.typetext "" & [tab_clienti.e_mail]

Doc.Bookmarks("cognome").Select
App.selection.typetext "" & [cognome]

Doc.Bookmarks("nome").Select
App.selection.typetext "" & [nome]

Doc.Bookmarks("mail1").Select
App.selection.typetext "" & [tab_collaboratori_cliente.e_mail]

'..........
Doc.SaveAs FileName:=NewPath & NewFile

'..........

Dir (NewPath & NewFile)

App.Quit
Set App = Nothing
Set Doc = Nothing

'............
MsgBox "Offerta salvata come: " & NewPath & NewFile

End If

If Len(Dir("strPath\" & "P_" & Left([numero_offerta], 4) & "-" & Right([numero_offerta], 4) & ".docx")) = 0 Then

Else

Set App = CreateObject("Word.Application")
App.Visible = True
Set Doc = App.Documents.Open("strPath\" & "P_" & Left([numero_offerta], 4) & "-" & Right([numero_offerta], 4) & ".docx")

End If

End Sub





Quello che voglio fare è creare il File in un percorso prestabilito, e se il file è già presente lo deve aprire.

invece continua a creare di nuovo il file e sovrascriverlo.

non so dove sbaglio.

4 Risposte

  • Re: Creare a aprire File

    Usa i tag CODE per il codice perché non si capisce nulla ...

    E poi perché le parti tra Then ed Else sono vuote? Se non servono, perché le metti?

    Infine ... perché nella prima If fai un confronto con >0 e nell'altra fai un confronto con =0

    ??
  • Re: Creare a aprire File

    Scusa io non so programmare, e quello che ho fatto l'ho visto in rete e sicuramente il codice sarà pieno di errori e la sintassi no è delle migliori.
    Private Sub Comando126_Click()
    
    Dim App As Object
    Dim Doc As Object
    Dim NewPath As String
    Dim NewFile As String
    Dim strPath As String
    Dim anno As Integer
    
    anno = Year(Date)
    
    strPath = "\\Server\z\01_GESTIONE AZIENDA\PREVENTIVI\" & CStr(anno)
    strPath = strPath & "\P_" & [numero_offerta] & " " & [ragione_sociale] & "-" & [riferimento]
    
    If Len(Dir("strPath\" & "P_" & Left([numero_offerta], 4) & "-" & Right([numero_offerta], 4) & ".docx")) > 0 Then
    
    Else
    
    
    Set App = CreateObject("Word.Application")
    App.Visible = False
    
    Set Doc = App.Documents.Open("\\Server\z\Gestionale Azienda\modulo_offerta.docx")
    
    '..........
    
    NewPath = strPath & "\"
    NewFile = "P_" & Left([numero_offerta], 4) & "-" & Right([numero_offerta], 4)
    
    '............
    Doc.Bookmarks("Data").Select
    App.selection.typetext "" & [data_offerta]
    
    Doc.Bookmarks("numero_offerta").Select
    App.selection.typetext "" & [numero_offerta]
    
    Doc.Bookmarks("riferimento").Select
    App.selection.typetext "" & [riferimento]
    
    
    Doc.Bookmarks("ragione_sociale").Select
    App.selection.typetext "" & [ragione_sociale]
    
    Doc.Bookmarks("via").Select
    App.selection.typetext "" & [via]
    
    Doc.Bookmarks("cap").Select
    App.selection.typetext "" & [cap]
    
    Doc.Bookmarks("provincia").Select
    App.selection.typetext "" & [sigla]
    
    Doc.Bookmarks("comune").Select
    App.selection.typetext "" & [Comune]
    
    Doc.Bookmarks("mail").Select
    App.selection.typetext "" & [tab_clienti.e_mail]
    
    Doc.Bookmarks("cognome").Select
    App.selection.typetext "" & [cognome]
    
    Doc.Bookmarks("nome").Select
    App.selection.typetext "" & [nome]
    
    Doc.Bookmarks("mail1").Select
    App.selection.typetext "" & [tab_collaboratori_cliente.e_mail]
    
    '..........
    Doc.SaveAs FileName:=NewPath & NewFile
    
    '..........
    
    Dir (NewPath & NewFile)
    
    App.Quit
    Set App = Nothing
    Set Doc = Nothing
    
    '............
    MsgBox "Offerta salvata come: " & NewPath & NewFile
    
    End If
    
    If Len(Dir("strPath\" & "P_" & Left([numero_offerta], 4) & "-" & Right([numero_offerta], 4) & ".docx")) = 0 Then
    
    Else
    
    Set App = CreateObject("Word.Application")
    App.Visible = True
    Set Doc = App.Documents.Open("strPath\" & "P_" & Left([numero_offerta], 4) & "-" & Right([numero_offerta], 4) & ".docx")
    
    End If
    
    End Sub
  • Re: Creare a aprire File

    Pippo_012 ha scritto:


    Scusa io non so programmare, e quello che ho fatto l'ho visto in rete...
    Questo ci mette in difficoltà perché è difficile aiutare senza sconfinare nel codice "pappa pronta".
    Oltre allo strano uso degli If, usi troppe volte la stessa concatenazione di costanti e variabili. Tanto vale assegnarla ad una variabile la prima volta, si guadagna in velocità (anche se probabilmente è impercettibile su poche esecuzioni) ed è molto più facile fare debug.

    Questa parte di codice, ad esempio, non fa quello che vorresti tu
    If Len(Dir("strPath\" & "P_" ... 
    Se con questa riga volevi verificare la presenza del file nel percorso contenuto nella variabile strPath\ sei in errore perché così facendo stai in realtà cercando qualcosa che si chiama strPath\P_(eccetera) e che con tutta probabilità non esiste (non credo che tu abbia una cartella che si chiama strPath nel filesystem)
    Probabilmente dovevi scrivere
    If Len(Dir(strPath & "\P_" ... 
    (da migliorare, con l'uso di variabili stringa apposite, come dicevo sopra)
    Comunque, ho dato una sfoltita al codice, con i commenti alle modifiche fatte e ai punti da approfondire man mano che chiarisci gli aspetti che precedono. Ho tolto anche la parte che per la soluzione di questo thread, non rileva (ma che deve essere lasciato nella procedura completa)
    Dim App As Object
    Dim Doc As Object
    Dim NewPath As String
    Dim NewFile As String
    Dim strPath As String
    Dim anno As Integer
    'dichiarazione di variabili da aggiungere
    Dim strVerifica as String
    Dim strNomeFile As String
    
    anno = Year(Date)
    
    strPath = "\\Server\z\01_GESTIONE AZIENDA\PREVENTIVI\" & CStr(anno)
    strPath = strPath & "\P_" & [numero_offerta] & " " & [ragione_sociale] & "-" & [riferimento]
    'siamo sicuri che questo path esiste? Se non c'è, al momento del salvataggio darà errore perché non trova dove salvare il file
    Debug.Print strPath
    
    strNomeFile = "P_" & Left([numero_offerta], 4) & "-" & Right([numero_offerta], 4) & ".docx"
    Debug.Print strNomeFile
    
    'Per vedere cosa valuta quella If di cui non abbiamo capito ancora l'utilità
    strVerifica = strPath & "\" & strNomeFile
    Debug.Print strVerifica
    
    Set App = CreateObject("Word.Application") 'questa vale in entrambi i casi
    
    If Len(Dir(strVerifica) > 0 Then
    ' esiste un file con quel nome
    ' codice di apertura del file esistente	
    ...
    ' rimane aperto "per sempre"? Nel codice non c'era niente in merito.
    
    Else
    'il file non esiste
    'codice per la creazione del file
    
    	App.Visible = False
    	Set Doc = App.Documents.Open("\\Server\z\Gestionale Azienda\modulo_offerta.docx")
    	..........
    	NewPath = strPath & "\"
    	NewFile = "P_" & Left([numero_offerta], 4) & "-" & Right([numero_offerta], 4)
    
    	Doc.SaveAs FileName:=NewPath & NewFile
    	
    	Dir (NewPath & NewFile) 'questa riga non serve se non è collegata ad alcuna valutazione del risultato della Dir()
    
    	MsgBox "Offerta salvata come: " & NewPath & NewFile
    
    End If
    'vedere cosa deve essere chiuso e distrutto dei vari oggetti, dentro la If e fuori.
    
    End Sub
  • Re: Creare a aprire File

    Pippo_012 ha scritto:


    Scusa io non so programmare,
    Allora perché vuoi cimentarti in qualcosa di cui non hai la minima idea?
    I programmatori esistono per quello.

    Pippo_012 ha scritto:


    e quello che ho fatto l'ho visto in rete e sicuramente il codice sarà pieno di errori e la sintassi no è delle migliori.
    Ah beh...
Devi accedere o registrarti per scrivere nel forum
4 risposte