OVH Cloud OVH Cloud

Ouverture des librairies à l'ouverture d'un fichier Excel

5 réponses
Avatar
Alex St-Pierre
Bonjour,
J'ai un programme qui requiert la librairie de Word pour fonctionner. Pour
ne pas créer de problème lorsqu'on change de version d'Office, j'ai mis une
procédure à l'ouverture et la fermeture du fichier pour ouvrir ou fermer la
librairie word.
1- Si on ne click pas "Faire confiance au projet Visual Basic", la procédure
est inéficace puisqu'elle requiert que l'utilisateur clique sur cet option.
Y-a-t-il d'autres approches plus simple?
2- Y-a-t-il moyen d'effacer les librairies MANQUANTES si jamais il y en a
car cela cré cré beaucoup de problèmes?
Merci bcp !!
Alex
Voici ce que j'utilise dans le module de classe:
Private Sub Workbook_Open()

Dim ref As Object
Dim refs As Object
Dim sID As String

On Error Resume Next

Set refs = ThisWorkbook.VBProject.References

If refs Is Nothing Then
MsgBox "need to change security settings"
Exit Sub
End If

On Error GoTo 0

sID = "{00020905-0000-0000-C000-000000000046}" 'Word

If Len(sID) = 0 Then Exit Sub

For Each ref In refs
If ref.GUID = sID Then
Exit Sub
End If
Next

On Error GoTo errH

refs.AddFromGuid sID, 0, 0

Exit Sub
errH:
MsgBox "Error setting reference to Word"

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim ref As Object
Dim refs As Object

On Error Resume Next

Set refs = ThisWorkbook.VBProject.References

If refs Is Nothing Then
MsgBox "need to change security settings"
Exit Sub
End If

On Error GoTo 0

For Each ref In refs
Err.Number = 0
On Error Resume Next
If ref.Name = "Word" Then
ThisWorkbook.VBProject.References.Remove ref
Exit Sub
End If
On Error GoTo 0
Next

End Sub

--
Alex St-Pierre

5 réponses

Avatar
MichDenis
Essaie ceci : à copier dans le ThisWorkbook de ton Classeur :

'-------------------------------
Private Sub Workbook_Open()

Dim Ref As Object, R As Object
Set Ref = ThisWorkbook.VBProject.References
For Each R In Ref
If R.Name = "Word" Then
Ref.Remove R
End If
Next

ThisWorkbook.VBProject.References.AddFromGuid _
"{00020905-0000-0000-C000-000000000046}", 3, 8

End Sub
'-------------------------------


Et pour les références manquantes, tu peux utiliser ceci :

'-------------------
Private Sub test()

Dim Ref As Object, R As Object
Set Ref = ThisWorkbook.VBProject.References
For Each R In Ref
If R.isbroken = True Then
Ref.Remove R
End If
Next
End Sub
'-------------------
Avatar
Alex St-Pierre
Salut Michel,
Il y a un message d'erreur à la ligne:
Set Ref = ThisWorkbook.VBProject.References (erreur 1004)
ou à cette ligne:
ThisWorkbook.VBProject.References.AddFromGuid _
"{00020905-0000-0000-C000-000000000046}", 3, 8
qui apparait lorsque le click Macro/Sécurité/"Faire confiance au projet
Visual Basic" n'est pas cliqué. Si je met le click, tout est correct.
Je ne sais pas s'il y a une autre façon d'ouvrir les liens? Sinon, je vais
mettre un message pour expliquer aux gens comment ajouter le click.
La macro qui efface les liens manquants fonctionne très bien!
Merci !
--
Alex St-Pierre


"MichDenis" wrote:

Essaie ceci : à copier dans le ThisWorkbook de ton Classeur :

'-------------------------------
Private Sub Workbook_Open()

Dim Ref As Object, R As Object
Set Ref = ThisWorkbook.VBProject.References
For Each R In Ref
If R.Name = "Word" Then
Ref.Remove R
End If
Next

ThisWorkbook.VBProject.References.AddFromGuid _
"{00020905-0000-0000-C000-000000000046}", 3, 8

End Sub
'-------------------------------


Et pour les références manquantes, tu peux utiliser ceci :

'-------------------
Private Sub test()

Dim Ref As Object, R As Object
Set Ref = ThisWorkbook.VBProject.References
For Each R In Ref
If R.isbroken = True Then
Ref.Remove R
End If
Next
End Sub
'-------------------






Avatar
MichDenis
| le click Macro/Sécurité/"Faire confiance au projet
| Visual Basic" n'est pas cliqué

Ceci n'a rien à voir avec la macro. De plus, je ne connais pas
une façon de cocher ces cases par Macro. Il y a probablement
une entrée à modifier dans la base de registre mais je ne la
connais pas.



"Alex St-Pierre" a écrit dans le message de news:

Salut Michel,
Il y a un message d'erreur à la ligne:
Set Ref = ThisWorkbook.VBProject.References (erreur 1004)
ou à cette ligne:
ThisWorkbook.VBProject.References.AddFromGuid _
"{00020905-0000-0000-C000-000000000046}", 3, 8
qui apparait lorsque le click Macro/Sécurité/"Faire confiance au projet
Visual Basic" n'est pas cliqué. Si je met le click, tout est correct.
Je ne sais pas s'il y a une autre façon d'ouvrir les liens? Sinon, je vais
mettre un message pour expliquer aux gens comment ajouter le click.
La macro qui efface les liens manquants fonctionne très bien!
Merci !
--
Alex St-Pierre


"MichDenis" wrote:

Essaie ceci : à copier dans le ThisWorkbook de ton Classeur :

'-------------------------------
Private Sub Workbook_Open()

Dim Ref As Object, R As Object
Set Ref = ThisWorkbook.VBProject.References
For Each R In Ref
If R.Name = "Word" Then
Ref.Remove R
End If
Next

ThisWorkbook.VBProject.References.AddFromGuid _
"{00020905-0000-0000-C000-000000000046}", 3, 8

End Sub
'-------------------------------


Et pour les références manquantes, tu peux utiliser ceci :

'-------------------
Private Sub test()

Dim Ref As Object, R As Object
Set Ref = ThisWorkbook.VBProject.References
For Each R In Ref
If R.isbroken = True Then
Ref.Remove R
End If
Next
End Sub
'-------------------






Avatar
Ange Ounis
Ceci n'a rien à voir avec la macro. De plus, je ne connais pas
une façon de cocher ces cases par Macro. Il y a probablement
une entrée à modifier dans la base de registre mais je ne la
connais pas.


Pour l'option "Faire confiance au projet Visual Basic", il s'agit de cette clé
(pour Excel 2003) :

HKEY_CURRENT_USERSoftwareMicrosoftOffice11.0ExcelSecurityAccessVBOM

Sa valeur est à 1 lorsque la case est cochée.

----------
Ange Ounis
----------

| le click Macro/Sécurité/"Faire confiance au projet
| Visual Basic" n'est pas cliqué

Ceci n'a rien à voir avec la macro. De plus, je ne connais pas
une façon de cocher ces cases par Macro. Il y a probablement
une entrée à modifier dans la base de registre mais je ne la
connais pas.



"Alex St-Pierre" a écrit dans le message de news:

Salut Michel,
Il y a un message d'erreur à la ligne:
Set Ref = ThisWorkbook.VBProject.References (erreur 1004)
ou à cette ligne:
ThisWorkbook.VBProject.References.AddFromGuid _
"{00020905-0000-0000-C000-000000000046}", 3, 8
qui apparait lorsque le click Macro/Sécurité/"Faire confiance au projet
Visual Basic" n'est pas cliqué. Si je met le click, tout est correct.
Je ne sais pas s'il y a une autre façon d'ouvrir les liens? Sinon, je vais
mettre un message pour expliquer aux gens comment ajouter le click.
La macro qui efface les liens manquants fonctionne très bien!
Merci !


Avatar
MichDenis
Merci Ange Ounis pour l'information.


"Ange Ounis" a écrit dans le message de news:
%
Ceci n'a rien à voir avec la macro. De plus, je ne connais pas
une façon de cocher ces cases par Macro. Il y a probablement
une entrée à modifier dans la base de registre mais je ne la
connais pas.


Pour l'option "Faire confiance au projet Visual Basic", il s'agit de cette clé
(pour Excel 2003) :

HKEY_CURRENT_USERSoftwareMicrosoftOffice11.0ExcelSecurityAccessVBOM

Sa valeur est à 1 lorsque la case est cochée.

----------
Ange Ounis
----------

| le click Macro/Sécurité/"Faire confiance au projet
| Visual Basic" n'est pas cliqué

Ceci n'a rien à voir avec la macro. De plus, je ne connais pas
une façon de cocher ces cases par Macro. Il y a probablement
une entrée à modifier dans la base de registre mais je ne la
connais pas.



"Alex St-Pierre" a écrit dans le message de news:

Salut Michel,
Il y a un message d'erreur à la ligne:
Set Ref = ThisWorkbook.VBProject.References (erreur 1004)
ou à cette ligne:
ThisWorkbook.VBProject.References.AddFromGuid _
"{00020905-0000-0000-C000-000000000046}", 3, 8
qui apparait lorsque le click Macro/Sécurité/"Faire confiance au projet
Visual Basic" n'est pas cliqué. Si je met le click, tout est correct.
Je ne sais pas s'il y a une autre façon d'ouvrir les liens? Sinon, je vais
mettre un message pour expliquer aux gens comment ajouter le click.
La macro qui efface les liens manquants fonctionne très bien!
Merci !