2

私は継続的なループを取得しています(私は信じています)。コードを実行すると、MsgBoxプロンプトが表示され、[OK]をクリックすると、プログラムが実行されて実行され、終了しませんか?最初はファイルへの接続エラーだと思っていましたが、そうだとすると、ADOがファイルに接続しようとしたときにエラーが発生するはずですよね?ファイルはそれほど大きくはなく、70行しかありません。MsgBoxを設定する方法では、ループの反復ごとに[OK]をクリックするように求められますが、別のMsgBoxを受け取ることはありません。提案?

' The following section reads from the elec_copy field's hyperlink
' It scans the Excel file for items it needs to include into the table
' It enters those cells into the TABLE 'items_needed_table'
'
' Selects row by row, and if the item has been marked TRUE, inserts
' That row into the TABLE 'items_needed_table'

' Open a connection to Excel
On Error Resume Next

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001

Set objConnection = CreateObject("ADODB.Connection")

objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & elec_copy.Value & ";" & _
        "Extended Properties=""Excel 12.0 Macro;HDR=Yes;"";"

' Decalre a RecordSet Object
Set objRecordSet = CreateObject("ADODB.Recordset")

' Grab all Rows in the Plain_VDR Sheet where 'needed' column == TRUE
objRecordset.Open "SELECT line_no,desc,weeks FROM [Plain_VDR$] WHERE needed = TRUE", _
    objConnection, adOpenStatic, adLockOptimistic, adCmdText

' Write the information pulled, into the TABLE 'items_needed_table' in Access Database
Do Until objRecordset.EOF
    MsgBox("" & qd.Parameters("p2"))
    Set qd = data_base.CreateQueryDef("")
    qd.sql = "INSERT INTO items_needed_table(pr_no, line_no, desc, weeks) " & _
        "Values([p1],[p2],[p3],[p4])"
    qd.Parameters("p1").Value = pr_num.Value
    qd.Parameters("p2").Value = objRecorset.Fields.Item("line_no")
    qd.Parameters("p3").Value = objRecordset.Fields.Item("desc")
    qd.Parameters("p4").Value = objRecordset.Fields.Item("weeks")
    qd.Execute
    objRecordset.MoveNext
Loop

' Close Database connection
data_base.Close

助けてくれてありがとう!ネイサン

4

1 に答える 1

4

On ErrorResumeNextの行を削除します。ほとんど使用しないでください。その行があるため、ループの原因となっているエラーがどこで発生しているのかわかりません。

もう1つの良いアイデアは、各モジュールの上部で常にOptionExplicitを使用することです。これにより、常に変数を宣言し、誰もが考えているよりも多くの悲しみを救うことができます。

于 2012-07-13T15:46:36.747 に答える