Les Snippets

Connexion

Ouvrir un fichier Word ou Excel, s'il est ouvert, une copie en lecture seule s'ouvre

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 24/02/2007 01:05:48 et initié par mortalino [Liste]
Date de mise à jour : 26/02/2007 00:04:19
Vue : 18143
Catégorie(s) : Fichier / Disque, Trucs & Astuces, Divers
Langages dispo pour ce code :
- VB6, VBA



Langage : VB6 , VBA
Date ajout : 24/02/2007
Posté par mortalino [Liste]
DateMAJ : 26/02/2007
Private Const OF_SHARE_EXCLUSIVE = &H10
Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As StringByVal iReadWrite As Long) As  Long
Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As LongAs Long
Function OpenDocXlsFile(FileToOpen As String) As Long
'   retourne  :
'   -1  -> erreur
'   0   -> fichier déjà ouvert, ouverture en lecture  seule
'   1   -> ouverture première  instance
    OpenDocXlsFile = -1
    
    Dim sExt        As String
    Dim NomAppli    As String
'   type de fichier  par son extension
    If LenB(FileToOpen) < 16 Then
        Exit Function
    Else
        sExt = LCase$(RightB$(FileToOpen, 8))
        If sExt = ".doc" Or sExt = ".rtf" Then
            NomAppli = "Word"
        ElseIf sExt = ".xls" Or sExt = ".csv" Then
            NomAppli = "Excel"
        Else
            Exit Function
        End If
    End If
'   ouverture  office
    Dim MonApp      As Object
    Dim MonDoc      As Object
    Dim hFile       As Long
    
    hFile = lopen(FileToOpen, OF_SHARE_EXCLUSIVE)
    If hFile <> -1 Then 'pas  ouvert
        lclose (hFile)
        Set MonApp = CreateObject(NomAppli &  ".Application")
        If NomAppli = "Word" Then
            Set MonDoc = MonApp.Documents.Open(FileToOpen)
        Else
            Set MonDoc = MonApp.Workbooks.Open(FileToOpen)
        End If
        OpenDocXlsFile = 1
    ElseIf (hFile = -1And (Err.LastDllError = 32) Then  'déjà ouvert
        lclose (hFile)
        Set MonApp = CreateObject(NomAppli &  ".Application")
        If NomAppli = "Word" Then
            On Local Error Resume Next
            Set MonDoc = MonApp.Documents.Open(FileToOpen, , True)
            If Err.Number = 4198 Then
'               word 2000, utilisateur fait  ANNULER
                Err.Clear
                GoTo Lbl_Exit
            End If
            On Error GoTo 0
        Else
            Set MonDoc = MonApp.Workbooks.Open(FileToOpen, , True)
        End If
        OpenDocXlsFile = 0
    End If
    MonApp.Visible = True
    
Lbl_Exit:
    Set MonDoc = Nothing
    Set MonApp = Nothing
End Function

'    EXEMPLE
Private Sub Form_Load()
    Debug.Print "Word : " & OpenDocXlsFile("C:\Nouveau  Document Microsoft Word.doc")
    Debug.Print "Excel : " & OpenDocXlsFile("C:\test.xls")
    
    Unload Me
End Sub

Remarque :
testé sous office pro/premium-2000, XP-2003, ultimate-2007

Snippets en rapport avec : Fichier, Ouvrir, Excel, Word, Copie



Codes sources en rapport avec : Fichier, Ouvrir, Excel, Word, Copie

{C / C++ / C++.NET} COPIE AVEC SHFILEOPERATION
Bonjour Voici un exemple de l'utilisation de la fonction SHFileOperation de l'api windows. La ...

{Visual Basic, VB6, VB.NET, VB 2005} LISTER FICHIERS D'UN DOSSIER
ce p'tit code permet de lister les fichiers d'un dossier choisi en plaçant leur noms, leur type et l...

{Visual Basic, VB6, VB.NET, VB 2005} COMPARATEUR EXCEL EN MASSE, AMÉLIORATIONS
mabrouklepoux avait proposé un comparateur de fichiers Excel. http://www.vbfrance.com/code.aspx?ID=3...

{JAVA / J2EE} PETIT PROGRAMME DE COPIE RAPIDE DE FICHIER
Un petit programme de copie de fichier. Je cherche un moyen de montrer létat d'avancement de la copi...

{Visual Basic, VB6, VB.NET, VB 2005} [VBA-EXCEL] MODIFICATEUR DE FICHIER EXCEL
Bonjour, Voici un petit programme en VBA permettant de trouver tous les fichiers excel à l'endroi...

{Visual Basic, VB6, VB.NET, VB 2005} WORD : OUVERTURE (AVEC OU SANS PASSWORD) ET PROPRIÉTÉES D'UN DOCUMENT WORD
Ce code a pour but d'ouvrir les doc. word (avec ou sans mot de passe, cependant si avec il le faut.....

{C / C++ / C++.NET} DUPLICATEUR DE FICHIERS
Programme servant à dupliquer n'importe quel fichier. Faites glisser un fichier sur l'exécutable et...

{Visual Basic, VB6, VB.NET, VB 2005} IMPRIMER EN LIASSE
bonjour Petit code pour imprimer en liasse plusieurs fichiers de type Excel, Word , PDF ou TXT . L...

{Visual Basic, VB6, VB.NET, VB 2005} OUVRIR DES HTA SANS MESSAGE DE LA PART DE WINDOWS
Lorsque l'on essaie d'ouvrir un fichier a partir d'un hta, window (IE version6.00.2900 et +) nous ...

{C# / C#.NET} IMPRESSION DE FICHIERS WORD/EXCEL
Ma librairie pour les programmes de gestion : - Impression d'un fichier word simple ; paramêtres ...