作者:绿色风
分类:
时间:2022-08-17
浏览:135
楼主 嘉昆2011 |
声明: 本文主体代码来自网络,7楼:
- http://www.vbaexpress.com/forum/showthread.php?44846-Value-from-embedded-ListBox-OLEObject
问题描述: 从网页复制粘帖内容时,经常会把HTML控件连带下载。然而所带来的问题是: 1,控件会耗费大量的资源,使打开文件速度缓慢; 2,控件使得数据不能进一步处理,如不能排序,不能加入数据透视表等。 那么如何读取HTML下拉列表控件的所选值,并删除控件呢?
解决思路: 在编辑模式下,点击该控件,查看Selected和DisplayValues的对照关系,即可得之相应控件的所选值。
代码:
- Sub test()
- Dim o As OLEObject, n As Integer
- n = 10
- For Each o In Sheet1.OLEObjects
- If o.progID = "Forms.HTML:Select.1" Then
- Select Case o.Object.HTMLName
- Case "reason"
- Sheet1.Range("R" & n) = htmlSelectedValue(o)
- Case "info"
- Sheet1.Range("T" & n) = htmlSelectedValue(o)
- Case "black"
- Sheet1.Range("U" & n) = htmlSelectedValue(o)
- Case "check"
- Sheet1.Range("V" & n) = htmlSelectedValue(o)
- n = n + 1
- End Select
- End If
- Next o
- End Sub
- Function htmlSelectedValue(h As OLEObject) As Variant
- Dim s() As String, i As Integer
- s() = Split(h.Object.Selected, ";")
- i = PosInArray(True, s)
- If i <> -1 Then htmlSelectedValue = Split(h.Object.DisplayValues, ";")(i - 1)
- End Function
- Function PosInArray(aValue, anArray)
- Dim pos As Long
- On Error Resume Next
- pos = -1
- pos = WorksheetFunction.Match(CStr(aValue), anArray, 0)
- PosInArray = pos
- End Function
动画操作:
附件:
样板.rar
推荐阅读:
- http://www.get-digital-help.com/2011/12/21/working-with-combo-boxes-form-control-using-vba/
|
2楼 水星钓鱼 |
学习了 |
3楼 老糊涂 |
学习了 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一