24小时热门版块排行榜    

查看: 2794  |  回复: 12
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

bongb

银虫 (小有名气)

[求助] 求急救:VBA中range对单元格不能依次读取数据,提示:“作用于对象Globle时失败”

Excel中用VBA写了一段,
程序代码如下(省略了一部分)
startcol = 1
endcol = startcol + XMS - 1
If startcol \ 26 > 0 Then
x1 = Chr(Asc("A" + startcol \ 26 - 1)
Else: x1 = ""
End If
x2 = Chr(Asc("A" + startcolMod26 - 1)
If endcol \ 26 > 0 Then
x3 = Chr(Asc("A" + endcol \ 26 - 1)
Else: x3 = ""
End If
x4  = Chr(Asc("A" + endcolMod26 - 1)
Set r = Range(x1 & x2 & i & ":" & x3 & x4 & i)

在执行时出现提示:“作用于对象Globle时失败”

在网上搜索,有个类似的,但也没能解决。
请教各位达人!
救急!谢谢!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bongb

银虫 (小有名气)

送红花一朵
感谢各位达人回答,
现在遇到的问题有两个:
1.'循环语句Set r = Range(x1 & x2 & i & ":" & x3 & x4 & i)总是无法执行,提示“作用于对象Globle时失败”,而语句'Set r = Range(i & ":" & i)仅能执行当前行

2.怎样让程序自动点击“确定保存”,就是能自动上传并保存全部数据到网页?



我这边的完整代码如下:【参考一篇文献来的,但验证时发现文献中有错误,修改了下;百度了下,网上有类似的疑问,但给出的解答不能解决问题】

Public mWindow As Object
Public mDocument As Object
Public STOPRUN As Integer
Public Const XMS As Integer = 4

Public xm As String '姓名
Public xb As Integer '性别
Public nl As Integer '年龄
Public zc As Integer '职称类别

Public Sub mComGetIEWindows(ByVal IETitle As String, Optional ByVal WaitTime As Integer = 0)
Dim mshellWindow As New SHDocVw.ShellWindows
Dim mIndex As Long
For mIndex = 0 To mshellWindow.Count - 1
If VBA.TypeName(mshellWindow.Item(mIndex).document) = "HTMLDocument" Then

If mshellWindow.Item(mIndex).document.Title = IETitle Then
If WaitTime = 1 Then
Do While mshellWindow.Item(mIndex).Busy
Application.Wait (Now + TimeValue("0:00:01")
DoEvents
Loop
End If

Set mDocument = mshellWindow.Item(mIndex).document
Set mWindow = mshellWindow.Item(mIndex)

mshellWindow.Item(mIndex).Visible = True
Exit Sub
End If
End If
Next mIndex

End Sub

Public Sub GetDataAutoInputContext()
Dim i As Integer
Dim r As Range
Dim x1 As String, x2 As String
Dim x3 As String, x4 As String
Dim startcol As Integer, endcol As Integer
If Selection Is Nothing Then
MsgBox "请先选中处理行", vbOKOnly, "错误"
STOPRUN = 1
Exit Sub
End If

i = Selection.Row
If i < 2 Then
MsgBox "不可处理第一行", vbOKOnly, "错误"
STOPRUN = 1
Exit Sub
End If
startcol = 1
endcol = startcol + XMS - 1
If startcol \ 26 > 0 Then
x1 = Chr(Asc("A" + startcol \ 26 - 1)
Else: x1 = ""
End If
x2 = Chr(Asc("A" + startcolMod26 - 1)
If endcol \ 26 > 0 Then
x3 = Chr(Asc("A" + endcol \ 26 - 1)
Else: x3 = ""
End If
x4 = Chr(Asc("A" + endcolMod26 - 1)
Set r = Range(x1 & x2 & i & ":" & x3 & x4 & i)

'循环语句Set r = Range(x1 & x2 & i & ":" & x3 & x4 & i)总是无法执行,提示“作用于对象Globle时失败”,而语句'Set r = Range(i & ":" & i)仅能执行当前行

For i = 1 To XMS Step 1
Select Case i
Case 1
xm = Trim(r.Cells(1, i).Value) '姓名
Case 2
nl = r.Cells(1, i).Value '年龄
Case 3
If Trim(r.Cells(1, i).Value) = "男" Then
xb = 1
ElseIf Trim(r.Cells(1, i).Value) = "女" Then
xb = 2
Else
MsgBox "性别字段错误", vbOKOnly, "错误"
STOPRUN = 1
Exit Sub
End If
Case 4
Select Case Trim(r.Cells(1, i).Value)
Case "初级"
zc = 1
Case "中级"
zc = 2
Case "高级"
zc = 3
Case Else
MsgBox "职称字段错误", vbOKOnly, "错误"
STOPRUN = 1
Exit Sub
End Select
End Select
Next i

End Sub

Public Sub AutoInputContext()


STOPRUN = 0
Call GetData
If STOPRUN = 1 Then
Exit Sub
End If

mComGetIEWindows ("测试文档"
If mDocument Is Nothing Then
MsgBox "没有找到指定的窗必须先打开才可以自动填表", vbOKOnly, "错误"
Exit Sub
End If


Do While mWindow.Busy
DoEvents
Loop


With mDocument.forms(0)
.Item("textfield1".Value = xm
.Item("textfield2".Value = nl
.Item("rbgroup".Item(xb - 1).Checked = True
.Item("select1".Item(zc - 1).Selected = True
.Item("Submit1".Click
End With

'释放对象
Set mDocument = Nothing
Set mWindow = Nothing
End Sub
8楼2013-06-21 09:09:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 13 个回答

bongb

银虫 (小有名气)

各位达人注意: 代码中(Asc("A" 的字符A后面的符号 " 和 ) 被自动替换成表情符号了
2楼2013-06-19 18:34:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bongb

银虫 (小有名气)

怎么没人回复呢?
3楼2013-06-20 11:16:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

michaelwlin

木虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
ben_ladeng: 金币+1, 谢谢指教 2013-06-20 21:49:59
大概知道 楼主的代码 想 实现 什么 功能

就 这段 代码 来看,命令Set r = Range(x1 & x2 & i & ":" & x3 & x4 & i)在执行前,未对变量 i 赋值~~~~

你贴的代码 不完全,目前 只能 帮到 这里了。

» 本帖已获得的红花(最新10朵)

4楼2013-06-20 11:21:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见