ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: VBA万岁

[求助] VSTO入门问题集

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-16 15:01 | 显示全部楼层
excelhomesnake 发表于 2016-1-15 22:06
建议你可以尝试一下写自己的功能类库,封装常用的功能,尽可能不要把逻辑都直接写在控件的关联方法上.
可 ...

当我有一定的C#基础之后,我会慢慢去尝试的......

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-16 15:16 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-17 17:02 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-17 17:04 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-17 20:22 | 显示全部楼层

comboBox5_SelectedIndexChanged代码中的:
var res = doc.DocumentNode.SelectSingleNode(@"/html[1]/body[1]/div[1]/div[6]/div[1]/div[1]/div[3]/dl[" + comboBox5.SelectedIndex +1 + "]/dd[1]");
需改为(加括号):
var res = doc.DocumentNode.SelectSingleNode(@"/html[1]/body[1]/div[1]/div[6]/div[1]/div[1]/div[3]/dl[" + (comboBox5.SelectedIndex +1) + "]/dd[1]");

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-18 09:54 | 显示全部楼层
VBA万岁 发表于 2016-1-15 09:57
VBA获取农历、星座、宜忌的代码稍作更改:

获取省、地市的代稍作更改:
Private Sub UserForm_Initialize()
Dim url, html, b, a, n
ComboBox1.Clear
url = "http://www.tianqihoubao.com/lishi/"
Set html = CreateObject("htmlfile")
With CreateObject("msxml2.xmlhttp")
    .Open "get", url, False
    .send
    html.body.innerhtml = StrConv(.responseBody, vbUnicode, &H804)
    For Each b In html.all.tags("b")
        n = n + 1
        ComboBox1.AddItem b.innertext
        ComboBox1.List(n - 1, 1) = Replace(Replace(b.parentElement.href, "about:/lishi/", ""), ".htm", "") & ";"
        For Each a In b.parentElement.parentElement.parentElement.ChildNodes(1).all.tags("a")
            ComboBox1.List(n - 1, 1) = ComboBox1.List(n - 1, 1) & ":" & a.innertext
        Next
    Next
End With
ComboBox1.ListIndex = 0
End Sub
Private Sub ComboBox1_Change()
Dim url, html, b, a, n, t
ComboBox2.Clear
ComboBox3.Clear
url = Replace("http://www.tianqihoubao.com/lishi/代码.htm", "代码", Split(ComboBox1.List(ComboBox1.ListIndex, 1), ";")(0))
Set html = CreateObject("htmlfile")
Set html = CreateObject("htmlfile")
With CreateObject("msxml2.xmlhttp")
    .Open "get", url, False
    .send
    html.body.innerhtml = StrConv(.responseBody, vbUnicode, &H804)
    For Each b In html.all.tags("b")
        n = n + 1
        t = ""
        'ComboBox2.AddItem b.innertext '因显示的是乱码,所以改用如下或拼音
        ComboBox2.AddItem Split(ComboBox1.List(ComboBox1.ListIndex, 1), ":")(n)
        'ComboBox2.AddItem Replace(Replace(b.parentElement.href, "about:/lishi/", ""), ".html", "") '改用拼音
        For Each a In b.parentElement.parentElement.parentElement.ChildNodes(1).all.tags("a")
            't = t & a.innertext & "," '因显示的是乱码,所以改用拼音
            t = t & Replace(Replace(a.href, "about:/lishi/", ""), ".html", "") & ","
        Next
        ComboBox2.List(n - 1, 1) = t
    Next
End With
ComboBox2.ListIndex = 0
End Sub



TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-20 11:02 | 显示全部楼层
VBA万岁 发表于 2016-1-14 15:57
顺便附上对网页源码按指定的网页标签进行分行(有些网页源码复制到工作表后是没有分行的文本)以便于对源 ...

对网页源码按指定的网页标签进行分行的VBA代码为:
  1. Sub 源数据分行(control As IRibbonControl)
  2. On Error Resume Next
  3. Dim r, t
  4. s = InputBox("请输入标签号,如:<a、<b、<div、...<table...", "输入标签号", "<div")
  5. s = IIf(s = "", "<body", s)
  6. s2 = IIf(s = "", "<body", Replace(s, "<", "</"))
  7. For Each t In Split(ActiveCell.Text, "    ") '第一层循环按空行(4个空格)分行
  8.     r = r + 1
  9.     ActiveCell.Offset(r) = Split(t, s)(0)
  10.     For r2 = 1 To UBound(Split(t, s)) '第二层循环按指定标签的起始标签分行
  11.         r = r + 1
  12.         ActiveCell.Offset(r) = s & Split(Split(t, s)(r2), s2)(0)
  13.         For r3 = 1 To UBound(Split(t, s2)) '第三层循环按指定标签的结束标签分行
  14.             r = r + 1
  15.             ActiveCell.Offset(r) = s2 & Split(Split(t, s)(r2), s2)(r3)
  16.         Next
  17.     Next
  18. Next
  19. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-20 11:22 | 显示全部楼层
VBA万岁 发表于 2016-1-20 11:02
对网页源码按指定的网页标签进行分行的VBA代码为:

(三)C#如何利InputBox函数对网页源码按标签名称进行分行?

        ——227楼的VBA代码中有一个InputBox函数,在C#中实现替代该函数的功能有两种方法:一是调用VB里的InputBox;二是编写自定义类。但VBA中的InputBox函数不仅可以输入文本,而且还可以实现工作表区域的引用。想知道C#中上述两种方法如何实现类似InputBox函数的功能(包括输入文本以及引用区域)?

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-20 11:31 | 显示全部楼层
VBA万岁 发表于 2016-1-20 11:22
(三)C#如何利InputBox函数对网页源码按标签名称进行分行?

        ——227楼的VBA代码中有一个Inpu ...

百度到以下帖子,均只能实现InputBox函数的输入文本的功能:
1、C#中的InputBox
2、C#输入框InputBox问题 .
3、在c#中 使用inputbox的几个问题
4、在C#中实现InputBox

TA的精华主题

TA的得分主题

发表于 2016-1-21 12:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
VBA万岁 发表于 2016-1-20 11:22
(三)C#如何利InputBox函数对网页源码按标签名称进行分行?

        ——227楼的VBA代码中有一个Inpu ...

你所说的vba的InputBox函数,实际是钩住excel的事件来得到所选区域..net中是很容易做到的.这是与委托相关的知识.在vsto中,可以直接使用你说的vba的InputBox方法.
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-30 17:20 , Processed in 0.047670 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表