2008-12-15 3 views
1

Existe-t-il un moyen facile d'importer des données à partir d'une source de données mysql/odbc dans une feuille de calcul Excel? L'utilisateur devrait être capable de sélectionner certaines valeurs à partir des listes déroulantes (par exemple plage de dates, nom de branche, etc.) et les valeurs de la liste déroulante devraient être utilisées pour remplir les instructions SQL (préparées). Les résultats doivent être affichés dans le fichier Excel.Module complémentaire Excel pour afficher les données de (My) SQL Database

Idéalement, il y aurait un élément de menu "save snapshot" qui convertirait le fichier dynamique Excel (avec les instructions sql sauvegardées) en fichier statique excel réduisant ainsi l'exposition des internes (par exemple sql) aux ressources externes.

Merci

Répondre

2

Vous pouvez télécharger une ODBC driver for MySQL, créer une source de données et utiliser MS Query pour créer une requête SQL personnalisée que vous pouvez ajouter à Excel via le menu Données.

0

est un exemple:

Set cn = CreateObject("ADODB.Connection") 
Set rs = CreateObject("ADODB.Recordset") 

strCon = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=MyDB;" _ 
& "User=UName;Password=PWord;Option=3;" 


cn.Open strCon 

strSQL = "SELECT * FROM Members" 

rs.Open strSQL, cn 

Worksheets(3).Cells(2, 1).CopyFromRecordset rs 
0

Cette méthode devrait être plus rapide que CopyFromRecordset. Bien sûr, vous devez vous assurer que le pilote MySQL ODBC 5.1 est installé ...

With AWorksheet.QueryTables.Add(_ 
    Connection:="ODBC;Driver=MySQL ODBC 5.1 Driver;Port=3306;Server=mysqlservername;Database=snort;User=username;Password=password;Option=3;" 
    Destination:=AWorksheet.Range(AWorksheet.Cells(1, 1), AWorksheet.Cells(1, 15)) _ 
) 

    .CommandText = "SELECT Something FROM Somewhere" 
    .Name = "Name" 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlOverwriteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = False 
    .RefreshPeriod = 0 
    .PreserveColumnInfo = True 
    .Refresh BackgroundQuery:=False 
    .Delete 
End With 
Questions connexes