2010-09-01 37 views
0

我有一個Excel 2007工作簿,其中包含一個ODBC數據連接(對於FoxPro而言很重要)。連接設置爲「打開文件時刷新數據」。當通過Windows資源管理器打開時,Excel 2007 ODBC數據會填充,但不會在通過Access VBA打開時填充

當我進入文件資源管理器並打開工作簿時,數據會填充到電子表格中。但是,當我在Access VBA中執行打開工作簿的函數時,來自ODBC連接的數據不會填充。

爲什麼打開工作簿的方式會有所不同?更重要的是,如何在通過Access VBA打開工作簿時填充數據?

這裏是打開工作簿訪問VBA代碼:

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 

回答

0

通過添加一行代碼解決下面提到,強制連接打開時刷新:

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