用户需求用Excel宏直接上传其中的数据导数据库中,于是我花了一个礼拜的时间对VBA的基础知识进行了解。当然只是关注于此次需求相关的部分,所以只能算是浅习(粗浅的学习)。


Sub UpLoadData()
    IsLogon 
= False
    
Dim DataTable(595As String
    
Dim WB As SHDocVw.InternetExplorer
    
    LoginForm.Show (
1)  '在上传数据时,需要进行身份验证
    
    
If Range("Z100").Value = "1" Then '在登录窗口函数中设置一个特殊的单元格的值来判定身份是否正确。
        IsLogon = True
    
End If
        
    
If IsLogon = True Then
        
Set WB = New SHDocVw.InternetExplorer
        WB.Visible 
= True
        WB.navigate 
"*********************.aspx" '需要完整URL,*号是为了隐去一些细节。
        loading = True 'IE浏览器网页未显示完全时不进行任何操作,在For循环中用while ...DoEvents...Wend会出现预料之外的结果。
        While loading
            
If (Not WB.Busy) And WB.readyState = READYSTATE_COMPLETE Then
                loading 
= False
            
End If
        
Wend
        
        
'MsgBox (Range(Chr(69) & "" & 4))
        '建立映射1列为E,2F,3G,4H
        For i = 0 To 4
            
For j = 0 To 59
                
If Application.WorksheetFunction.IsNumber(Range(Chr(69 + i) & "" & (j + 4)).Value) Then
                    DataTable(j, i) 
= Range(Chr(69 + i) & "" & (j + 4)).Value
                
Else
                    DataTable(j, i) 
= 0
                
End If
            
Next j
        
Next i
        
        
On Error Resume Next
        
For i = 0 To 3
            
For j = 0 To 57
            
'MsgBox (DataTable(j, i))
            WB.document.all("c" & (j + 1& (i + 1)).Value = DataTable(j, i) '访问打开的页面中的DOM元素并赋值。
            Next j
        
Next i
    
End If
     
    
'以下获取页面控件对象txt_no1_bl
    'WB.Application.Quit
    'Application.ScreenUpdating = True
End Sub

相关文章: