Protection à l'ouverture et lecture avec getobject

Le
Jean-Paul GIORGETTI
Bonjour à tous et meilleurs voeux.

Je souhaiterais pouvoir effectuer une lecture dans un fichier protégé en
ouverture avec la fonction Getobject sans l'intervention de l'utilisateur.
La fonction intégré n'a apparemment pas prévue cette éventualité mais
peut-être existe-t-il une astuce ?

Merci pour votre aide et à bientôt,

Jean-Paul


Set Préc = GetObject("C:Mon Fichier Excel.xls")
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #5337991
| Set Préc = GetObject("C:Mon Fichier Excel.xls")

En utilisant ce qui suit, pour ceux qui ne savent pas, tu
ne voit pas l'interface de la feuille de calcul mais le
contenu du fichier est accessible et son projetVBA
est disponible dans la fenêtre de l'éditeur de code.

En fait, sans que l'usager ne voit le classeur s'ouvrir,
on peut utiliser ce type de code

**********************
Set f = GetObject("C:classeur1.xls")
f.Worksheets(1).Range("A1:C5").Copy Feuil1.Range("A1")
f.Close
**********************

Le hic, comme ton fichier requiert un mot de passe à l'ouverture,
il n'y a aucun moyen de lire les données de ce classeur que ce soit
à partir de formule, en utilisant ADO, DAO, .... et c'est bien le but
recherché lorsqu'un usager prend la peine de restreindre l'ouverture
de ce dernier par mot de passe.

Si tu utilises "GetObject" cela signifie que tu as déjà une
instance d'excel d'ouvert... tu peux alors utiliser ceci et obtenir
le même effet (non visible par l'usager)

Application.ScreenUpdating = False
Set f = Workbooks.Open(Filename:="C:classeur1.xls", Password:="MonMotDePasse")
f.Worksheets(1).Range("A1:C5").Copy Feuil1.Range("A1")
f.Close

Il n'existe pas d'autre solution !




"Jean-Paul GIORGETTI" OSuV$
Bonjour à tous et meilleurs voeux.

Je souhaiterais pouvoir effectuer une lecture dans un fichier protégé en
ouverture avec la fonction Getobject sans l'intervention de l'utilisateur.
La fonction intégré n'a apparemment pas prévue cette éventualité mais
peut-être existe-t-il une astuce ?

Merci pour votre aide et à bientôt,

Jean-Paul


Set Préc = GetObject("C:Mon Fichier Excel.xls")
J
Le #5337971
Bonjour
ce qui suit (de Frédéric Sigonneau d'après Ron de Bruin)te serait-il utile?
J@@

Récupération de données dans un classeur fermé
(méthode "classique" par établissement d'une liaison temporaire)
(c'est aussi la technique habituellement conseillée pour essayer de
récupérer des données d'un classeur endommagé) FS.

Sub test()
GetValuesFromAClosedWorkbook "D:", "TestADO.xls", "Feuil1", "A1:H25"
End Sub

Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep
'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub

Bonjour à tous et meilleurs voeux.

Je souhaiterais pouvoir effectuer une lecture dans un fichier protégé en
ouverture avec la fonction Getobject sans l'intervention de l'utilisateur.
La fonction intégré n'a apparemment pas prévue cette éventualité mais
peut-être existe-t-il une astuce ?

Merci pour votre aide et à bientôt,

Jean-Paul


Set Préc = GetObject("C:Mon Fichier Excel.xls")




MichDenis
Le #5337961
En étant un peu plus précis... au lieu de ceci :

| pour ceux qui ne savent pas, tu ne vois pas l'interface de la feuille de calcul

Non seulement tu ne vois pas l'interface de calcul du fichier ouvert de cette manière,
mais ce dernier est inaccessible par l'interface de la feuille de calcul. Seule le
projetVBA du fichier s'affiche dans la fenêtre de l'éditeur de code.

Par vba, tu peux accéder directement à toutes les données du classeur
ouvert de cette façon comme si le fichier avait été ouvert normalement.

Le seul hic, on ne peut y mettre un mot de passe restreignant son ouverture !




"MichDenis"
| Set Préc = GetObject("C:Mon Fichier Excel.xls")

En utilisant ce qui suit, pour ceux qui ne savent pas, tu
ne voit pas l'interface de la feuille de calcul mais le
contenu du fichier est accessible et son projetVBA
est disponible dans la fenêtre de l'éditeur de code.

En fait, sans que l'usager ne voit le classeur s'ouvrir,
on peut utiliser ce type de code

**********************
Set f = GetObject("C:classeur1.xls")
f.Worksheets(1).Range("A1:C5").Copy Feuil1.Range("A1")
f.Close
**********************

Le hic, comme ton fichier requiert un mot de passe à l'ouverture,
il n'y a aucun moyen de lire les données de ce classeur que ce soit
à partir de formule, en utilisant ADO, DAO, .... et c'est bien le but
recherché lorsqu'un usager prend la peine de restreindre l'ouverture
de ce dernier par mot de passe.

Si tu utilises "GetObject" cela signifie que tu as déjà une
instance d'excel d'ouvert... tu peux alors utiliser ceci et obtenir
le même effet (non visible par l'usager)

Application.ScreenUpdating = False
Set f = Workbooks.Open(Filename:="C:classeur1.xls", Password:="MonMotDePasse")
f.Worksheets(1).Range("A1:C5").Copy Feuil1.Range("A1")
f.Close

Il n'existe pas d'autre solution !




"Jean-Paul GIORGETTI" OSuV$
Bonjour à tous et meilleurs voeux.

Je souhaiterais pouvoir effectuer une lecture dans un fichier protégé en
ouverture avec la fonction Getobject sans l'intervention de l'utilisateur.
La fonction intégré n'a apparemment pas prévue cette éventualité mais
peut-être existe-t-il une astuce ?

Merci pour votre aide et à bientôt,

Jean-Paul


Set Préc = GetObject("C:Mon Fichier Excel.xls")
Jean-Paul GIORGETTI
Le #5337821
Merci, c'est bien ce que je pensais.

Je vais m'inspirer de ce que tu m'as dit pour gérer mes copies dans ce
classeur, voire passer sa propriété Isaddin sur true pour éviter son
affichage lors de cette opération.

Bonne continuation sur ce forum, merci et à bientôt,

Jean-Paul

"MichDenis"
| Set Préc = GetObject("C:Mon Fichier Excel.xls")

En utilisant ce qui suit, pour ceux qui ne savent pas, tu
ne voit pas l'interface de la feuille de calcul mais le
contenu du fichier est accessible et son projetVBA
est disponible dans la fenêtre de l'éditeur de code.

En fait, sans que l'usager ne voit le classeur s'ouvrir,
on peut utiliser ce type de code

**********************
Set f = GetObject("C:classeur1.xls")
f.Worksheets(1).Range("A1:C5").Copy Feuil1.Range("A1")
f.Close
**********************

Le hic, comme ton fichier requiert un mot de passe à l'ouverture,
il n'y a aucun moyen de lire les données de ce classeur que ce soit
à partir de formule, en utilisant ADO, DAO, .... et c'est bien le but
recherché lorsqu'un usager prend la peine de restreindre l'ouverture
de ce dernier par mot de passe.

Si tu utilises "GetObject" cela signifie que tu as déjà une
instance d'excel d'ouvert... tu peux alors utiliser ceci et obtenir
le même effet (non visible par l'usager)

Application.ScreenUpdating = False
Set f = Workbooks.Open(Filename:="C:classeur1.xls",
Password:="MonMotDePasse")

f.Worksheets(1).Range("A1:C5").Copy Feuil1.Range("A1")
f.Close

Il n'existe pas d'autre solution !




"Jean-Paul GIORGETTI" message de news:

OSuV$
Bonjour à tous et meilleurs voeux.

Je souhaiterais pouvoir effectuer une lecture dans un fichier protégé en
ouverture avec la fonction Getobject sans l'intervention de l'utilisateur.
La fonction intégré n'a apparemment pas prévue cette éventualité mais
peut-être existe-t-il une astuce ?

Merci pour votre aide et à bientôt,

Jean-Paul


Set Préc = GetObject("C:Mon Fichier Excel.xls")





Publicité
Poster une réponse
Anonyme