Pb instruction VBA ouverture Word

Résolu
Zebulon97 Messages postés 52 Statut Membre -  
Zebulon97 Messages postés 52 Statut Membre -
Bonjour,

Je rencontre un problème dans une instruction VBA. Jusqu'à présent en Office 2003 ou 2007, j'ouvrais Word et Excel avec l'instruction suivante :
Call Shell("""winword.exe"" ""\\srv2008\linea\Fichiers ACCESS 2000\Pack Consultation des entreprises\Entreprises non retenues.doc", 1).
Depuis que nous sommes passés en Office 2010 et 2013, cette instruction ne fonctionne plus. Access ne semble pas trouver Word ni Excel.
En passant par la commande exécuter du menu programme winword.exe ouvre bien Word.
J'utilise cette instruction car la base concernée est distribuée sur différents postes avec des OS différents XP, Seven donc des chemins d'accès à Office différents.
Si quelqu'un à une idée, je suis preneur.
Bonne fin d'après midi à tous, cordialement.
Zebulon

4 réponses

  1. tessel75
     
    Bonsoir,
    Voici ce qu'en dit le didacticiel VBA Access (F1), si ça peut t'aider:

    Call, instruction, exemple
    ' Appelle une fonction intrinsèque. La valeur renvoyée par la fonction est abandonnée.
    Call Shell(AppName, 1)
    ' AppName contient le chemin d'accès du fichier exécutable.


    Bonne suite
    0
  2. Zebulon97 Messages postés 52 Statut Membre
     
    Bonjour tessel75,

    Merci pour ta réponse.
    Je l'ai testé, mais le problème persiste WINWORD.EXE renvoie fichier introuvable.
    Si j'indique NOTEPAD.EXE l'exécutable est reconnu.
    Je pense que WINWORD.EXE semble poser problème à ACCESS dans Office 2010 et 2013 et n'ouvre pas Word.
    Cordialement.
    0
  3. tessel75
     
    Re..
    Je pense que tu ne m'as pas compris. Moi je comprends de la remarque du didacticiel Access que la syntaxe est changée; il faudrait essayé en entrant:
    Call Shell(" \\srv2008\linea\Fichiers ACCESS 2000\Pack Consultation des entreprises\Entreprises non retenues.doc", 1). 
    Ou bien aller regarder dans les profondeurs de Office si MS n'a pas abandonné l'appellation "WinWord"
    0
  4. Zebulon97 Messages postés 52 Statut Membre
     
    On m'a fourni la solution.

    dans un module existant, ajoutez cette déclaration avant toute autre déclaration de fonction ou de procédure :
    ________________________________________
    Private Declare Function apiShellExecute 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
    ________________________________________
    Public Sub Open_WordFile(ByVal strPathFilePath)

    Dim lngResult As Long

    On Error GoTo GestError

    lngResult = apiShellExecute(0, "open", strPathFilePath, vbNullChar, vbNullChar, 0)

    Fin:
    Exit Sub

    GestError:
    'Gestion d'erreur à définir
    GoTo Fin

    End Sub

    Cela fonctionne.
    Merci pour l'attention apportée à mon problème.
    0