Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258

    On error goto

    Devo creare un ON ERROR GOTO affinchè al verificarsi del'errore "percorso non corretto" nella stringa

    c:\progra~1\micros~2\office11\winword.exe

    mi vada al percorso:

    c:\progra~1\micros~1\office11\winword.exe

    in una Sub ho fatto così:

    sub originaria:
    codice:
    Sub Documento_Click ()
    
    Dim NomeFile As String, Tipo  As String, x As Integer
    
    
    NomeFile = LeggiNomeMDB()             ' Visualizza la finestra di dialogo per l'apertura dei file.
    
    If NomeFile = "" Then
       Exit Sub
    Else
       NomeFile = LTrim(RTrim(NomeFile))
       Tipo = Right(NomeFile, 3)
       Debug.Print Tipo
        If Tipo = "DOC" Then
           If 1 <> 0 Then
              x = Shell("c:\progra~1\micros~2\office11\winword.exe" & NomeFile, 3)
           Else
              x = Shell("c:\winword\winword.exe " & NomeFile, 3)
           End If
        Else
           If 1 <> 0 Then
              x = Shell("c:\progra~1\micros~2\office11\excel.exe " & NomeFile, 3)
           Else
              x = Shell("c:\excel\excel.exe " & NomeFile, 3)
           End If
        End If
    End If
       
    
    
    End Sub
    Sub modificata:

    codice:
    Sub Richiama (Parametro As String, Secondo As Long, Flag As Integer)
    
    On Error GoTo RichiamaMaledettaTilde :-)
    
        Dim Path As String, file As String, x As Integer, Tipo As Integer
        Dim filefine As String
        
        Path = DLookup("[Path]", "Procedure", "[Procedura]='" + Parametro + "'")
        file = DLookup("[File]", "Procedure", "[Procedura]='" + Parametro + "'")
        Tipo = DLookup("[Tipo File]", "Procedure", "[Procedura]='" + Parametro + "'")
        
        If Flag = 1 Then
           Path = Path & Mid(Str(Secondo), 2) & "\"
        End If
        
        filefine = Path & file
    
        If Tipo = 1 Then
           If Len(Dir$("z:\luca\win.txt")) <> 0 Then
              x = Shell("c:\progra~1\micros~2\office11\winword.exe " & filefine, 3)
           Else
              x = Shell("c:\winword\winword.exe " & filefine, 3)
           End If
        Else
           If Len(Dir$("z:\luca\win.txt")) <> 0 Then
           
              x = Shell("c:\progra~1\micros~2\office11\excel.exe " & filefine, 3)
           Else
              x = Shell("c:\excel\excel.exe " & filefine, 3)
           End If
        End If
        
    Exit Sub
    
    RichiamaMaledettaTilde :-) :
        If Tipo = 1 Then
           If Len(Dir$("z:\luca\win.txt")) <> 0 Then
              x = Shell("c:\progra~1\micros~1\office11\winword.exe " & filefine, 3)
           Else
              x = Shell("c:\winword\winword.exe " & filefine, 3)
           End If
        Else
           If Len(Dir$("z:\luca\win.txt")) <> 0 Then
           
              x = Shell("c:\progra~1\micros~1\office11\excel.exe " & filefine, 3)
           Else
              x = Shell("c:\excel\excel.exe " & filefine, 3)
           End If
        End If
     
     Resume Next
    
    End Sub

    ora però non riesco ad inserire un ERROR GOTO in quest'altra Sub:
    codice:
    Sub Documento_Click ()
    
    Dim NomeFile As String, Tipo  As String, x As Integer
    
    
    NomeFile = LeggiNomeMDB()             ' Visualizza la finestra di dialogo per l'apertura dei file.
    
    If NomeFile = "" Then
       Exit Sub
    Else
       NomeFile = LTrim(RTrim(NomeFile))
       Tipo = Right(NomeFile, 3)
       Debug.Print Tipo
        If Tipo = "DOC" Then
           If 1 <> 0 Then
              x = Shell("c:\progra~1\micros~1\office11\winword.exe " & NomeFile, 3)
           Else
              x = Shell("c:\winword\winword.exe " & NomeFile, 3)
           End If
        Else
           If 1 <> 0 Then
              x = Shell("c:\progra~1\micros~1\office11\excel.exe " & NomeFile, 3)
           Else
              x = Shell("c:\excel\excel.exe " & NomeFile, 3)
           End If
        End If
    End If
       
    
    
    End Sub

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sorvolando un attimo sul problema dell' On Error, ci spieghi cosa vorresti fare con il tuo programma ?

    Te lo chiedo perche' - molto probabilmente - stai seguendo una strada sbagliata ....

    P.S. A parte che questa if

    If 1 <> 0 Then

    e' - a dir poco - strana ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    il programma funziona...è stato scritto da un programmatore in accesss 2.0 più di dieci anni fa

    so che quell'if è strano ma se vedessi il resto del codice non crederesti ai tuoi occhi

    in pratica questa sub fa si che al click di un tasto in una maschera vengano aperti i file excel o word con i rispettivi programmi

    solo che alcuni client hanno il percorso dei programmi in:
    c:\progra~1\micros~2\office11\winword.exe

    e altri in:
    c:\progra~1\micros~1\office11\winword.exe

    per cui mi serve un error goto per dire che se trova un errore nel primo percorso deve andare al secondo percorso

  4. #4
    se il tuo problema è rintracciare il percorso di word, puoi farlo con altri mezzi e salvarlo in un file tipo .ini, così non lo devi ricercare ogni volta.

    se invece devi semplicemente aprire il file, prova a fare una shell indicando solo il nome del file: windows dovrebbe automaticamente aprirti il programma associato.

    facce sape'


  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Luca1317
    il programma funziona...è stato scritto da un programmatore in accesss 2.0 più di dieci anni fa

    so che quell'if è strano ma se vedessi il resto del codice non crederesti ai tuoi occhi
    Quell'if e' assolutamente inutile e faresti bene a toglierlo ... se ci sono altre linee che non hanno senso, faresti meglio a toglierle ...

    in pratica questa sub fa si che al click di un tasto in una maschera vengano aperti i file excel o word con i rispettivi programmi
    Il programma fa il test con i file DOC, altrimenti li considera TUTTI Excel, dato che non testa l'estensione XLS.

    Non hai detto se stai riscrivendo il programma in VB6 ... in questo caso butta tutto e utilizza la ShellExecute per avviare il programma di default assegnato all'estensione del file dal sistema

    codice:
    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 r As Long
       r = ShellExecute(0, "open", NomeFile, 0, 0, 1)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    purtroppo VB non è il mio linguaggio ma per fortuna devo modificare lsolo questa sub

    X OPTIME: se non meto il percorso e metto solo x = Shell(NomeFile, 3) mi da errore e mi dice CHIAMATA DI FUNZIONE NON CORRETTA

    potreste darmi una mano a mettere un error goto? sembra davvero l'unica soluzione in access 2.0

  7. #7
    ma stai usando vb6 o vba?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Luca1317
    purtroppo VB non è il mio linguaggio ma per fortuna devo modificare lsolo questa sub

    X OPTIME: se non meto il percorso e metto solo x = Shell(NomeFile, 3) mi da errore e mi dice CHIAMATA DI FUNZIONE NON CORRETTA

    potreste darmi una mano a mettere un error goto? sembra davvero l'unica soluzione in access 2.0
    Che lavoravi con il VBA di Access 2 dovevi indicarlo nel titolo del thread (come da regolamento) per farci capire ...

    Non ricordo se la funzione Shell era supportata da Access 2 ma dovrebbe essere

    Shell("cmd /c start " & NomeFile)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    con "cmd /c start " funziona

    grazie mille

  10. #10
    Shell("CMD /c " & NomeFile)

    oppure

    Shell("START /wait /max " & NomeFile)


    la prima dovrebbe funzionare meglio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.