VBA Excel; la mise à Jour d'une chaîne de connexion
Je suis juste essayer d'obtenir VBA pour mettre à jour une chaîne de connexion OLEDB. Quand je marche à travers le code, je ne comprends pas les erreurs mais la connexion actualisation échoue et quand j'examine la chaîne de connexion dans l'INTERFACE utilisateur, il est évident que mon code n'a pas changé du tout (d'où le rafraîchissement de l'échec). Qu'ai-je manqué?
Voici le code:
Sub UpdateQueryConnectionString(ConnectionString As String)
With ActiveWorkbook.Connections("Connection Name"). _
OLEDBConnection
.Connection = StringToArray(ConnectionString)
End With
ActiveWorkbook.Connections("Connection Name").Refresh
End Sub
La ConnectionString sont nourris en est:
ConnectionString = = "Provider=SLXOLEDB.1;Data Source=SERVER;Initial Catalog=DATABASE" _
& ";User ID=" & Username & ";Password=" & Password & _
";Persist Security Info=True;Extended Properties=" _
& Chr(34) & "PORT=1706;LOG=ON;CASEINSENSITIVEFIND=ON;INCLUDECALCFIELDS=ON;" & Chr(34)
La fonction StringToArray est copié directement de l'Exemple 4 sur http://support.microsoft.com/kb/105416
Je vous suggère de vérifier attentivement chacune des propriétés dans la fenêtre variables locales assurez-vous qu'ils existent réellement - je ne connais pas la syntaxe par cœur. Array(ConnectionString) sembler bizarre syntaxe, compte tenu du fait que ConnectionString est une chaîne de caractères.
semble être de droite qu'est - ce que
Je pense que le tableau de la partie est généré par l'Enregistreur de Macro, et comme @KimGysen dit, ne s'applique pas ici. Essayer avec juste
Je l'ai essayé sans Array (), mais à obtenir une erreur d'exécution. Un peu de creuser trouvé ce MS, article de Support. Voir L'Exemple 4. Le tableau est utilisé pour arrêter les chaînes de plus de 255 caractères tronqués, mais je ne pense pas que j'ai fait ce droit. Je vais mettre à jour le code dans ma question de ce que j'ai fait aujourd'hui. L'INTERFACE utilisateur ne montre toujours pas de changements à la Chaîne de Connexion (bon ou mauvais).
Je n'ai pas compté le nombre de caractères mais votre chaîne de connexion n'a pas l'air traverse limite de 255 caractères?
semble être de droite qu'est - ce que
array()
, essayez sans array()
, juste avec ConnectionString
.Je pense que le tableau de la partie est généré par l'Enregistreur de Macro, et comme @KimGysen dit, ne s'applique pas ici. Essayer avec juste
ConnectionString
.Je l'ai essayé sans Array (), mais à obtenir une erreur d'exécution. Un peu de creuser trouvé ce MS, article de Support. Voir L'Exemple 4. Le tableau est utilisé pour arrêter les chaînes de plus de 255 caractères tronqués, mais je ne pense pas que j'ai fait ce droit. Je vais mettre à jour le code dans ma question de ce que j'ai fait aujourd'hui. L'INTERFACE utilisateur ne montre toujours pas de changements à la Chaîne de Connexion (bon ou mauvais).
Je n'ai pas compté le nombre de caractères mais votre chaîne de connexion n'a pas l'air traverse limite de 255 caractères?
OriginalL'auteur Dominic | 2013-12-11
Vous devez vous connecter pour publier un commentaire.
L'a obtenu. Le code suivant a travaillé.
Juste nourrir ConnectionString dans une chaîne de caractères comme je l'ai illustré dans ma question initiale.
OriginalL'auteur Dominic
Cette ligne fonctionne pour moi pour actualiser le code qui utilise OLEDB:
La raison semble être que excel vous demande d'indiquer le type même si vous faites référence à un particulier, nommé, connexion.
J'ai vérifié la chaîne, 238 caractères, 258 avec des espaces...pouvez-vous retirer la CHR(34) [double-quote] - est-ce nécessaire?
Aussi, avez-vous essayé de faire un fichier de connexion?
oui, CHR(34) est une partie indispensable de la chaîne de connexion. C'était la façon la plus simple que j'ai trouvé pour échapper à la " en tant que partie de la chaîne. Non, je n'ai pas essayé de faire un fichier de connexion.
OriginalL'auteur Sam
Même, nous pouvons actualiser la connexion et à son tour, il va vous rafraîchir tous les pivots sont liés.
Pour ce code, j'ai créé trancheuse de table présente dans Excel:
OriginalL'auteur Rajiv Singh