2010-09-29 5 views
1

J'ai une table dans un fichier Excel appelé "Employee_States_File". Cette table contient deux colonnes Nom et Etats. Les deux colonnes sont remplies de données. La table province contient l'abréviation des états tels que "NE, WA" et ainsi de suite. J'ai un autre fichier Excel appelé "States_File" qui contient une table qui a deux colonnes: Abréviation et FullStateName. Cette table est considérée comme une table de recherche pour rechercher les noms d'état complets en fonction de l'abréviation. Maintenant, je veux écrire un code dans VB6 de sorte que lorsque l'utilisateur clique sur un bouton, tous les noms d'abréviations dans la table du fichier Excel "Employee_States" sont des changements dans les noms d'état complets basés sur la table de recherche de la feuille Excel " States_File ". cela a-t-il du sens? Veuillez nous aider,Fonction de recherche dans VB6

+0

Ce sont des fichiers Excel? XLS ou XLSX? Pourquoi ne pas utiliser la [fonction VLOOKUP Excel] (http://office.microsoft.com/en-us/excel-help/vlookup-HP005209335.aspx) et le faire directement dans Excel? – MarkJ

+0

J'ai utilisé la fonction VLOOKUP. Cependant, cela me rend fou parce que cela fonctionne autour de la moitié des enregistrements et ensuite il me donne une erreur comme: "Impossible d'obtenir la propriété vlookup de la classe de fonction Worksheet". On m'a dit que cette erreur signifie que la fonction VLOOKUP n'a pas trouvé de correspondance d'une valeur dans la première colonne de la table de recherche. Lorsque j'ai changé manuellement cette valeur et que je l'ai remplacée par une valeur précédemment trouvée, elle reste bloquée. Je ne sais pas pourquoi cela me donne ce message d'erreur. J'utilise des fichiers XLS. une idée? . Je ne peux pas le faire directement dans Excel. – guest1

Répondre

0

Si vous êtes autorisé à les convertir en fichiers CSV (fichiers texte délimités par des virgules), vous pouvez utiliser le moteur Jet Database et faire des jointures SQL normales.

Je l'utilise pour configurer la connexion. Chaque fichier est une table dans la connexion et vous pouvez faire des jointures SQL. Notez que l'exemple est juste une simple ouverture d'une table. Vous pouvez utiliser n'importe quelle syntaxe SQL valide.

Dim DB1 As Connection 
Dim TB As Recordset 
Dim FSO As FileSystemObject 
Dim tImport As New DBImportList 
Set FSO = New FileSystemObject 
Set tImport = New DBImportList 
If FSO.FileExists(FileName) Then 
    Set DB1 = OpenTextConnection(FileName) 
    Set TB = New Recordset 

    TB.Open "SELECT * FROM [" & FSO.GetFile(FileName).Name & "]", DB1, adOpenKeyset, adLockOptimistic, adCmdText 

End If 
+0

Existe-t-il un moyen d'utiliser le fichier .xls sans les convertir en csv? – guest1

+0

uniquement si l'utilisateur a installé Microsoft Office. Vous pouvez utiliser les bibliothèques COM exportées par Excel pour accéder directement aux fichiers .xls. Je ne recommande pas cela pour la recherche de table simple car elle introduit des interdépendances inutiles. –