Board logo

標題: [發問] VBA語法問題 [打印本頁]

作者: ts00690106    時間: 2015-8-20 11:16     標題: VBA語法問題

大家好,我是剛剛鑽研VBA語法的新手...

由於手頭有工作必須將excel的資料依序填入網頁中的空格

[attach]21769[/attach]

EXCEL有A欄與B攔兩欄的資料

想要依照 A1 (第一筆資料)填入 第1號單號
                  B1(第一筆資料的掛號碼) 填入第1號的掛號碼

目前遇到的問題是 以下列的程式碼來跑檔案的話

Private Sub UserForm_Activate()
Dim myIE As InternetExplorer
Dim url$, sDoc As Object
Dim x As integer

Set myIE = WebBrowser1
With myIE
    url = "公司內網"
    .Navigate url
    Do While .Busy Or .ReadyState <> READYSTATE_COMPLETE
    DoEvents
    Loop
    With .Document
        Set x = Row(1, 0)
        For Each sDoc In .all.tags("input")
            If sDoc.Name = "item" Then sDoc.Value = Range("A1").Offset(x, 0)
            If sDoc.Name = "mailNumber" Then sDoc.Value = Range("B1").Offset(x - 1, 0)
            x = x + 1
        Next
        For Each sDoc In .all.tags("input")
            If InStr(sDoc.Value, "登入") > 0 Then
                sDoc.Click
            End If
        Next
    End With
End With
End Sub

由於我有100筆以上的資料,但是他會在A欄中跳號,對應的B欄也會有誤差1欄(例如A欄第一筆資料會對到B欄第二筆資料,
故程式碼弄成Range("B1").Offset(x - 1, 0))

執行完程式之後,最多只跑到27筆...不知道該怎麼樣修改這個錯誤,請大家幫忙,謝謝T.T
作者: diolin    時間: 2015-8-20 11:31

你先確認看看這個迴圈,  是否有掃完整個網頁的 input

        For Each sDoc In .all.tags("input")
            'If sDoc.Name = "item" Then sDoc.Value = Range("A1").Offset(x, 0)
            'If sDoc.Name = "mailNumber" Then sDoc.Value = Range("B1").Offset(x - 1, 0)
            x = x + 1
            debug.print sDoc.Name
        Next
作者: ts00690106    時間: 2015-8-20 15:27

diolin大你好

考慮到所有的input 我將所有input值都填上了
Private Sub UserForm_Activate()
Dim myIE As InternetExplorer
Dim url$, sDoc As Object
Dim x As Integer

Set myIE = WebBrowser1
With myIE
    url = "公司內網"
    .Navigate url
    Do While .Busy Or .ReadyState <> READYSTATE_COMPLETE
    DoEvents
    Loop
    With .Document
        For Each sDoc In .all.tags("input")
            If sDoc.Name = "Sys_BatchNumber" Then sDoc.Value = [M1]
            If sDoc.Name = "Sys_mailNumber1" Then sDoc.Value = [N1]
            If sDoc.Name = "Sys_mailNumber2" Then sDoc.Value = [O1]
            If sDoc.Name = "ChkPasse" Then sDoc.Value = 1
            If sDoc.Name = "item" Then sDoc.Value = Range("A1").Offset(x, 0)
            If sDoc.Name = "mailNumber" Then sDoc.Value = Range("B1").Offset(x - 1, 0)
            If sDoc.Name = "CarNo" Then sDoc.Value = 1
            x = x + 1
        Next
        For Each sDoc In .all.tags("input")
            If InStr(sDoc.Value, "登入") > 0 Then
                sDoc.Click
            End If
        Next
    End With
End With
End Sub

但是依然還是只有跳到27筆

而且欄位亂跳的問題還在(像是網頁第一個空格居然是第七筆資料(A7))

不知道該怎麼辦...
作者: Joforn    時間: 2015-9-11 21:24

回復 3# ts00690106
把网页上的源码贴出来。要看到网页中的控件布局才好有针对性的找到问题。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)