2010-09-01 18 views
0

J'ai un classeur Excel 2007 qui contient une connexion de données ODBC (pour FoxPro, si cela est important). La connexion est définie sur "actualiser les données lors de l'ouverture du fichier".Les données ODBC Excel 2007 sont remplies lors de leur ouverture via l'Explorateur Windows, mais pas lorsqu'elles sont ouvertes via Access VBA

Lorsque j'entre dans l'explorateur de fichiers et ouvre le classeur, les données sont insérées dans la feuille de calcul comme il se doit. Toutefois, lorsque j'exécute une fonction dans Access VBA qui ouvre le classeur, les données de la connexion ODBC ne sont pas remplies.

Pourquoi est-ce que cela changerait le mode d'ouverture du classeur? Et plus important encore, comment puis-je obtenir les données à remplir lorsque le classeur est ouvert via Access VBA?

Voici le code VBA Access ouvre le classeur:

Public Sub Subform_cmdOpenFile_Click(frm As Form) 

Dim rs As Recordset 
Dim ftiSuperclass As FilingTemplateInterface 

Set rs = frm.RecordsetClone 

If (rs.BOF Or rs.EOF) Then GoTo PROC_EXIT 

Set ftiSuperclass = New FilingTemplateInterface 
ftiSuperclass.ShowWorkbook rs!Directory & frm!Filename 

PROC_EXIT: 
On Error Resume Next 
rs.Close 
Set rs = Nothing 
ftiSuperclass.QuitExcel 
Set ftiSuperclass = Nothing 
Exit Sub 

PROC_ERROR: 
Resume PROC_EXIT 
End Sub 


Friend Sub ShowWorkbook(strFilename As String) 
Dim fso As New Scripting.FileSystemObject 
Dim appExcel As New Excel.Application 
appExcel.Workbooks.Open Filename:=strFilename, AddToMRU:=True 
appExcel.visible = True 
Set appExcel = Nothing 
End Sub 

Répondre

0

résolu en ajoutant la ligne de code indiqué ci-dessous, à la connexion forcer actualisation à l'ouverture:

Friend Sub ShowWorkbook(strFilename As String) 
Dim fso As New Scripting.FileSystemObject 
Dim appExcel As New Excel.Application 
appExcel.Workbooks.Open Filename:=strFilename, AddToMRU:=True 
appExcel.ActiveWorkbook.Connections("ConnectionName").Refresh 'added this line 
appExcel.visible = True 
Set appExcel = Nothing 
End Sub