Excel 运行时错误3705,对象打开时不允许操作

Excel 运行时错误3705,对象打开时不允许操作,excel,vba,Excel,Vba,添加行后,我收到错误3705 [MTSU_Data].[Tool no]=" CInt(WsInput.Range("J" & c).value) & ";" .ActiveConnection = conn 发生错误的突出显示行位于 .ActiveConnection = conn 完整代码 Dim conn As ADODB.Connection Dim Accdata As ADODB.Recordset Dim Accfield As ADODB.Field Di

添加行后,我收到错误3705

[MTSU_Data].[Tool no]=" CInt(WsInput.Range("J" & c).value) & ";"
.ActiveConnection = conn 
发生错误的突出显示行位于

.ActiveConnection = conn
完整代码

Dim conn As ADODB.Connection
Dim Accdata As ADODB.Recordset
Dim Accfield As ADODB.Field
Dim wsQueryR As Worksheet, wsFinal As Worksheet

Set wsFinal = Worksheets("Final")
Set conn = New ADODB.Connection
Set Accdata = New ADODB.Recordset

conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\wongki7\Desktop\MTSU Db.accdb;"
conn.Open
'G:\BusUnits\MTSU\MTSU\Mold Tool Set Up\MTSU  Reports\Shift Reports\MTSU Db.accdb;"
' On Error GoTo CloseConnection

  For c = 2 To WsInput.Range("J" & Rows.Count).End(xlUp).Row
    With Accdata
      .ActiveConnection = conn
      .Source = "SELECT * FROM [MTSU_Data] Where [MTSU_Data].[Date]>= #" _
            & Format(CDate(WsInput.Range("A2").value), "mm/dd/yyyy") & " # AND [MTSU_Data].[Date]<= #" _
            & Format(CDate(WsInput.Range("A3").value), "mm/dd/yyyy") & " # AND [MTSU_Data].[LT] = " _
            & CInt(WsInput.Range("M2").value) & " AND [MTSU_Data].[Tool no]=" _
            & CInt(WsInput.Range("J" & c).value) & ";"
      .LockType = adLockReadOnly
      '.CursorType = adOpenForwardOnly
      .Open
    End With
  Next
  Worksheets("Result").Select
  Sheets("Result").Range("a2").CopyFromRecordset Accdata
  Accdata.Close
  conn.Close

感谢您的帮助。谢谢,祝你有个愉快的一天。

你不能试着移动线路吗

[MTSU_Data].[Tool no]=" CInt(WsInput.Range("J" & c).value) & ";"
.ActiveConnection = conn 
到圈外。显然完全符合条件

Accdata.ActiveConnection = conn 

在我看来,您正在尝试为每个迭代建立连接,我认为这只需要一次。。。可能吧。

为了最适合您的代码,我尝试以下方法:

Sub SomeRoutine()

Dim conn As ADODB.Connection
Dim Accdata As ADODB.Recordset
Dim Accfield As ADODB.Field
Dim wsQueryR As Worksheet, wsFinal As Worksheet
Dim c As Long

Set wsFinal = Worksheets("Final")
Set conn = New ADODB.Connection
Set Accdata = New ADODB.Recordset

conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\wongki7\Desktop\MTSU Db.accdb;"
conn.Open
Accdata.ActiveConnection = conn
Accdata.LockType = adLockReadOnly

For c = 2 To WsInput.Range("J" & Rows.Count).End(xlUp).Row
    Call Accdata.Open("SELECT * FROM BLah Blah")
    Sheets("Result").Range("a2").CopyFromRecordset Accdata
    Accdata.Close
Next
conn.Close
End Sub

您可以查看构建SQL请求的方式,以构建一个查询,一次获取数据,并使用CopyFromRecordset将数据粘贴到Excel。。。。但那是另一个问题。

我以前犯过很多次错误。指定对象时,需要使用“设置”。换行

Set .ActiveConnection = conn

.Source和.LockType是标量属性,因此它们不需要设置,但.Activeconnection需要设置。

错误现在替换为error 424 Object required。突出显示的行是.Source=从[MTSU_数据]中选择*,其中[MTSU_数据].[Date]>=\uU&FormatCDateWsInput.RangeA2.value,mm/dd/yyyy&和[MTSU_数据].[Date]