Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 一切正常,您有两种解决方案将其放入VBA_Excel_Vba_Ms Access - Fatal编程技术网

Excel 一切正常,您有两种解决方案将其放入VBA

Excel 一切正常,您有两种解决方案将其放入VBA,excel,vba,ms-access,Excel,Vba,Ms Access,或者完全使用上面的代码;在这种情况下,只需复制连接字符串和查询即可简化操作 或者,这是我建议的,我们以前构建的表可以在VBA中非常轻松地更新 使用以下代码: WorksheetWithTable.ListObjects(1).QueryTable.Refresh 您真的不需要超过这1行代码来进行刷新。 如果将查询设置为在修改单元格值时自动刷新,则根本不需要它 注意#1:您可以使用表名,而不是.ListObjects(1)中的索引。 节点#2:如果要在后台刷新查询,刷新有一个可选参数来驱动Tr

或者完全使用上面的代码;在这种情况下,只需复制连接字符串和查询即可简化操作

或者,这是我建议的,我们以前构建的表可以在VBA中非常轻松地更新

使用以下代码:

WorksheetWithTable.ListObjects(1).QueryTable.Refresh 
您真的不需要超过这1行代码来进行刷新。
如果将查询设置为在修改单元格值时自动刷新,则根本不需要它

注意#1:您可以使用表名,而不是
.ListObjects(1)
中的索引。

节点#2:如果要在后台刷新查询,刷新有一个可选参数来驱动
True
表示VBA代码不会等待执行结束后再移动到下一条指令
False显然是相反的。

您可以尝试两件事:首先,将查询更改为具有
。。。在#“&startdt&”和#“stopdt&”#ORDER BY…
(可能需要将日期格式化为
worksheetfunction.text(startdt,“M/D/YYYY”)
)。如果这不起作用,请尝试在下一行的
.Open Source:=…
后面添加一个
.MoveFirst
。@FXD这两个选项似乎都不起作用:(.这与我的数据库是.mdb文件而不是.accdb文件有关吗?不,它与扩展名无关。请尝试ISO格式(
“YYYY-MM-DD”
)可能吧。如果这仍然不起作用(您是否检查过
Recordset.RecordCount
btw?),您是否反对Excel数据连接(即在不使用VBA的情况下获取电子表格中的数据)?@FXD不反对Excel数据连接,这不适用于我,而是适用于我工作地点的另一个团队。请注意,在
范围(“A1”)行中.Offset(1,0).CopyFromRecordset记录集
范围(“A1”)
中的引号是错误的unicode字符。它必须是
范围(“A1”)
您可以尝试的两件事:首先,将查询更改为具有
…介于#“&startdt&”和#“stopdt&”和#ORDER BY…
(可能需要将日期格式化为
工作表函数.text(startdt,“M/D/YYYY”)
)。如果这不起作用,请尝试在下一行的
后面添加一个
。MoveFirst
。开源:=…
。@FXD这两个选项似乎都不起作用:(.这与我的数据库是.mdb文件而不是.accdb文件有关吗?不,它与扩展名无关。也许可以尝试ISO格式(
“YYYY-MM-DD”
)。如果仍然不起作用(您是否检查了
记录集.RecordCount
btw?),是否有任何与Excel数据连接不符的地方(即,在不使用VBA的情况下获取电子表格中的数据)@FXD不支持Excel数据连接,这不适用于我,而是适用于我工作地点的另一个团队。请注意,在
范围(“A1”).Offset(1,0).CopyFromRecordset记录集
行中,
范围(“A1”)中的引号
是错误的unicode字符。它必须是
范围(“A1”)
Sub getdatamdb()
          Dim cn As Object, rs As Object
          Dim intColIndex As Integer
          Dim DBFullName As String
          Dim TargetRange As Range

10        DBFullName = "X:\MyDocuments\CMS\CMS Database.mdb"

20        On Error GoTo Whoa

30        Application.ScreenUpdating = False

40        Set TargetRange = Sheets("Sheet1").Range("A1")

50        Set cn = CreateObject("ADODB.Connection")
60        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DBFullName & ";"

70        Set rs = CreateObject("ADODB.Recordset")
80        rs.Open "SELECT * FROM Tracking WHERE [Date_Logged] BETWEEN #" & startdt & "# AND #" & stopdt & "# ORDER BY [Date_Logged]", cn, , , adCmdText

          ' Write the field names
90        For intColIndex = 0 To rs.Fields.Count - 1
100           TargetRange.Offset(1, intColIndex).Value = rs.Fields(intColIndex).Name
110       Next

          ' Write recordset
120       TargetRange.Offset(1, 0).CopyFromRecordset rs

LetsContinue:
130       Application.ScreenUpdating = True
140       On Error Resume Next
150       rs.Close
160       Set rs = Nothing
170       cn.Close
180       Set cn = Nothing
190       On Error GoTo 0
200       Exit Sub
Whoa:
210       MsgBox "Error Description :" & Err.Description & vbCrLf & _
             "Error at line     :" & Erl & vbCrLf & _
             "Error Number      :" & Err.Number
220       Resume LetsContinue
End If
End Sub
WorksheetWithTable.ListObjects(1).QueryTable.Refresh