ADO et sécurité des fichiers excel

Calimero33

XLDnaute Nouveau
Bonjour,

j'ai créé des macros sur un fichier excel qui est régulièrement copier. Mon problème et que lors du copier coller du fichier, mes macros sont copiées avec les tableaux MAIS je la référence Microsoft ActiveX Data Objects pour utiliser ADO se désactive automatiquement dans ma copie. Existe t-il une solution pour que l'utilisateur qui ne connait pas du tout le VBA n'ai pas à le faire manuellement ?

De plus mes fichiers sont sécurisés, pour déclencher mes macro j'ai du mettre en faible le niveau de sécurité du fichier, mon fichier est expose aux risques de virus. Comment puis-je faire pour exécuter mes macros tout en sécurisant mon fichier ?

Merci, de votre aide !!
 
C

Compte Supprimé 979

Guest
Re : ADO et sécurité des fichiers excel

Salut Calimero33,

Tu peux ajouter la référence à l'ouverture de ton classeur par exemple
Code:
Private Sub Workbook_Open()
  Dim Path As String
  On Error Resume Next
  Application.DisplayAlerts = False
  Path = "C:\Program Files\Common Files\System\ado\"
  With ThisWorkbook.VBProject.References
    .AddFromFile Path & "msado28.tlb"
  End With
  Application.DisplayAlerts = True
  On Error GoTo 0
End Sub
PS : je ne sais pas si le chemin est le bon je suis sous Seven

Pour la sécurité, tu peux la mettre au niveau moyen, comme ça Excel posera la question.

A+
 

Pierrot93

XLDnaute Barbatruc
Re : ADO et sécurité des fichiers excel

Bonjour Calimero, Bruno:),

une autre solution pour éviter d'avoir à cocher la référence est de passer par la fonction "CreateObject", dans ce cas les variables de type "ADODB.Connection" et "AODB.Recordset" sont doivent être typées "object", un exemple ci-dessous :

Code:
Option Explicit
Sub test()
Dim Source As Object, Rst As Object
Dim nomfeuille As String, fichier As String, t As String, i As Integer
nomfeuille = "Synthese"
fichier = "C:\MesDocs\Excel\Test\test.xls"
Set Source = CreateObject("ADODB.Connection")
Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & fichier & ";Extended Properties=""Excel 8.0;HDR=Yes;"";"
t = "SELECT * FROM [" & nomfeuille & "$]"
Set Rst = Source.Execute(t)
For i = 1 To Rst.Fields.Count
    Cells(1, i) = Rst.Fields(i - 1).Name
Next i
Sheets("Feuil1").Range("A2").CopyFromRecordset Rst
Rst.Close
Source.Close
End Sub

bonne journée
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 595
Messages
2 090 103
Membres
104 378
dernier inscrit
neovo