<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0"><channel><title>Excel精英培训--最新20篇论坛精华-全文</title><link>http://www.excelpx.com</link><language>zh-cn</language><description>Excel精英培训</description><copyright>http://www.excelpx.com</copyright><generator>Rss Generator By Dvbbs.Net</generator><webMaster>476850230@qq.com</webMaster><item><title>【原创】用批注记录单元格内容修改历史【支持批量修改，支持撤销】</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=140715&amp;Page=1</link><author>轩辕轼轲</author><pubDate>2010-9-7 8:45:00</pubDate><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有时候我们希望<span class="t_tag" href="tag.php?name=%B5%A5%D4%AA%B8%F1">单元格</span>的每一次修改都能记录下来，这时候这个东西就很有用了，呵呵，这个<span class="t_tag" href="tag.php?name=%B4%FA%C2%EB">代码</span>我改了好几次，觉得完善的差不多了就发上来和大家分享一下。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可能有人说这个功能可以用<span class="t_tag" href="tag.php?name=Excel">Excel</span>本身的修订模式，但需要注意的是，修订模式只能记录最后一个的修订，而不能把每一次的修改都记录下来！<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最主要的是在文件保存后，下一次再打开文件的时候，还能指定区域进行撤销上一次修改。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大家在工作区点击右键就能看到最下面有一个自定义菜单叫【监控<span class="t_tag" href="tag.php?name=%B5%A5%D4%AA">单元</span>格变动】，里面有好多选项的。可以撤销监控，可以重设区域。可以复位右键菜单。右击单元格在弹出菜单中即可看到。<br/><img title="dvubb" src="skins/default/filetype/rar.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/><a href="viewFile.asp?BoardID=5&ID=131857" target="_blank">点击浏览该文件</a><br/><br/><img title="dvubb" src="skins/default/filetype/gif.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/>此主题相关图片如下：<br/><a href="showimg.asp?BoardID=5&filename=2010-9/201097845829564.gif" target="_blank"><img title="dvubb" src="showimg.asp?BoardID=5&filename=2010-9/201097845829564.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/></a><br/>
<div align="right"><font color="#000066">[此贴子已经被过儿于2010-9-10 14:18:54编辑过]</font></div>
]]></description></item><item><title>VBA程序开发板块资料汇总</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=109149&amp;Page=1</link><author>amulee</author><pubDate>2010-1-8 10:39:00</pubDate><description><![CDATA[<p>忽然发现这个板块有很多优秀的帖子，已经很久没有整理了，稍微整理一下吧。</p><p>也欢迎大家讲优秀的文章提供给我。</p><p>1楼 教程</p><p>2楼 实用代码</p><p>3楼 控件应用</p><p>4楼、类模块</p><p>5楼、DAO/ADO/SQL</p><p>6楼、应用实例</p><p>7楼、实用工具</p><p>8楼、其他</p>
<div align="right"><font color="#000066">[此贴子已经被过儿于2010-1-8 12:43:37编辑过]</font></div>
]]></description></item><item><title>[分享]我们一起学习DAO</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=102710&amp;Page=1</link><author>搁浅2008</author><pubDate>2009-12-1 20:58:00</pubDate><description><![CDATA[<p>&nbsp;学EXCEL到现在 发现如果一直放EXCEL要是放满了怎么办呢&nbsp; 见别人可以把数据放在access里 理论上可以无限放进去然后看了 篮板的VBA技巧 发现DAO代码最简单 于是我开始学习DAO</p><p>一、手工新建数据库，打开和关闭数据库</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACCESS数据库用代码可以建但是我觉得没那个必要&nbsp; 我是用他来放东西的 无所谓了 于是我手工右键建一个ACCESS文件 重命名为数据库.mdb 然后创建表1 然后添加字段名称姓名和成绩. 好手工新建完毕 关闭退出.</p><p>EXCEL要想用DAO先要引用一下,方法是打开VBE编辑器 引用 找到DAO 3.6</p><p>&nbsp;<br/><img title="dvubb" src="skins/default/filetype/jpg.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/>此主题相关图片如下：<br/><a href="showimg.asp?BoardID=5&filename=2009-12/200912120263930861.jpg" target="_blank"><img title="dvubb" src="showimg.asp?BoardID=5&filename=2009-12/200912120263930861.jpg" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/></a></p><p>&nbsp;然后是数据库的打开和关闭.因为无论是写入数据,修改数据 删除数据 查询数据 都要先打开数据库 然后再关闭的</p><p>&nbsp;操作数据库先要声明变量</p><p>&nbsp;&nbsp; 打开</p><p>&nbsp;&nbsp; Dim db1 As Database '声明数据库变量<br/>&nbsp;&nbsp;&nbsp; Dim rs1 As Recordset '声明指针<br/>&nbsp;&nbsp;&nbsp; Set db1 = OpenDatabase(ThisWorkbook.Path & "\数据库.mdb")<br/>&nbsp;&nbsp;&nbsp; Set rs1 = db1.OpenRecordset(Name:="表1", Type:=dbOpenDynaset)</p><p>关闭更简单：</p><p>&nbsp;&nbsp;&nbsp; rs1.Close<br/>&nbsp;&nbsp;&nbsp; db1.Close</p><p>因为我的EXCEL和数据在同一个文件夹路径我就这样写了ThisWorkbook.Path & "\数据库.mdb"</p><p>二、增加数据</p><p>&nbsp;&nbsp;&nbsp;&nbsp; Sub 增加记录()<br/>&nbsp;&nbsp;&nbsp; Dim i As Long<br/>&nbsp;&nbsp;&nbsp; Dim db1 As Database&nbsp;&nbsp;&nbsp; '声明数据库变量<br/>&nbsp;&nbsp;&nbsp; Dim rs1 As Recordset&nbsp;&nbsp;&nbsp; '声明指针<br/>&nbsp;&nbsp;&nbsp; Set db1 = OpenDatabase(ThisWorkbook.Path & "\数据库.mdb")<br/>&nbsp;&nbsp;&nbsp; Set rs1 = db1.OpenRecordset(Name:="表1", Type:=dbOpenDynaset)<br/>&nbsp;&nbsp;&nbsp; For i = 2 To Range("A65536").End(xlUp).Row&nbsp;&nbsp;&nbsp; '行循环<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1.AddNew&nbsp;&nbsp;&nbsp; '增加一行新数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1.Fields("姓名") = Cells(i, 1)&nbsp;&nbsp;&nbsp; '写入数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1.Fields("成绩") = Cells(i, 2)&nbsp;&nbsp;&nbsp; '写入数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1.Update&nbsp;&nbsp;&nbsp; '把记录写入数据库 这个一定不能少<br/>&nbsp;&nbsp;&nbsp; Next i&nbsp;&nbsp;&nbsp; '循环下一个<br/>&nbsp;&nbsp;&nbsp; rs1.Close<br/>&nbsp;&nbsp;&nbsp; db1.Close<br/>End Sub</p><p>这个类似于listview控件增加数据 rs1.AddNew&nbsp;&nbsp;&nbsp; rs1.Update&nbsp;&nbsp;&nbsp; 记住就行</p><p>二、修改数据</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 把姓名A3的成绩改成70</p><p>&nbsp;&nbsp;&nbsp; Sub 修改记录()<br/>&nbsp;&nbsp;&nbsp; Dim db1 As Database&nbsp;&nbsp;&nbsp; '声明数据库变量<br/>&nbsp;&nbsp;&nbsp; Dim rs1 As Recordset&nbsp;&nbsp;&nbsp; '声明指针<br/>&nbsp;&nbsp;&nbsp; Set db1 = OpenDatabase(ThisWorkbook.Path & "\数据库.mdb")<br/>&nbsp;&nbsp;&nbsp; Set rs1 = db1.OpenRecordset(Name:="表1", Type:=dbOpenDynaset)<br/>&nbsp;&nbsp;&nbsp; rs1.FindFirst "姓名='A3'"&nbsp;&nbsp;&nbsp; '找到A3,后边还要专门讲查询<br/>&nbsp;&nbsp;&nbsp; rs1.Edit&nbsp;&nbsp;&nbsp; '编辑修改<br/>&nbsp;&nbsp;&nbsp; rs1.Fields("成绩") = 70&nbsp;&nbsp;&nbsp; '把成绩修改掉<br/>&nbsp;&nbsp;&nbsp; rs1.Update&nbsp;&nbsp;&nbsp; '把记录保存到数据库这句不要漏掉<br/>&nbsp;&nbsp;&nbsp; rs1.Close<br/>&nbsp;&nbsp;&nbsp; db1.Close<br/>End Sub<br/>三、删除数据</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把姓名A4这条记录删除掉</p><p>Sub 删除记录()<br/>&nbsp;&nbsp;&nbsp; Dim db1 As Database&nbsp;&nbsp;&nbsp; '声明数据库变量<br/>&nbsp;&nbsp;&nbsp; Dim rs1 As Recordset&nbsp;&nbsp;&nbsp; '声明记录<br/>&nbsp;&nbsp;&nbsp; Set db1 = OpenDatabase(ThisWorkbook.Path & "\数据库.mdb")<br/>&nbsp;&nbsp;&nbsp; Set rs1 = db1.OpenRecordset(Name:="表1", Type:=dbOpenDynaset)<br/>&nbsp;&nbsp;&nbsp; rs1.FindFirst "姓名='A4'"&nbsp;&nbsp;&nbsp; '找到A4<br/>&nbsp;&nbsp;&nbsp; rs1.Delete<br/>&nbsp;&nbsp;&nbsp; rs1.Close<br/>&nbsp;&nbsp;&nbsp; db1.Close<br/>End Sub<br/>这里没有 rs1.Update&nbsp;&nbsp;&nbsp;&nbsp; 只有新增和修改时才用。<br/><img title="dvubb" src="skins/default/filetype/rar.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/><a href="viewFile.asp?BoardID=5&ID=97782" target="_blank">点击浏览该文件</a></p><p>查询在3楼</p><p>原来ACCESS可以设置数据类型 在数据表 数据类型设置一下 以上代码计算还有查询会方便更多, 让高手们笑话了<br/></p><img title="dvubb" src="http://www.excelpx.com/Skins/Default/emot/em04.gif" border="0" align="middle" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/>
<div align="right"><font color="#000066">[此贴子已经被作者于2010-5-10 10:58:34编辑过]</font></div>
]]></description></item><item><title>[原创]VBA过程的调用（含过程名称为变量时的方法）</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=102597&amp;Page=1</link><author>uranus1997</author><pubDate>2009-12-1 2:06:00</pubDate><description><![CDATA[<p><font size="2">注：以下是本文的excel版本</font><br/>&nbsp;<img title="dvubb" src="skins/default/filetype/rar.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/><a href="viewFile.asp?BoardID=5&ID=97660" target="_blank">点击浏览该文件</a></p><p><font color="#ff00ff" size="4"><strong>【不带变量调用】</strong></font></p><p><font size="2">一般在VBA里，我们调用某个过程，都会用Call语句，先说说用Call语句直接调用某个过程的方法</font></p><p><font size="2">例如你有一个过程aa如下：<br/></font><font color="#0000ff" size="2">Sub aa()<br/>　　Msgbox "喵喵", 64<br/></font><font color="#0000ff" size="2">End Sub</font></p><p><font size="2">那么调用这个过程的方法为：<br/></font><font color="#0000ff" size="2">Sub Call_aa_01()<br/>　　aa<br/>End Sub</font></p><p><font size="2">这里，call语句里的call是可以省略的，但为了令代码更清晰，一般程序员会喜欢加上去，以表示aa是一个过程：<br/></font><font color="#0000ff" size="2">Sub Call_aa_02()<br/>　　Call aa<br/>End Sub</font></p><p><font size="2">如果aa是一个带有参数的过程，如：<br/></font><font color="#0000ff" size="2">Sub aa(str As String)<br/>&nbsp;&nbsp;&nbsp; MsgBox str, 64<br/>End Sub</font></p><p><font size="2">那么在用call语句调用的时候，就要这样（不带Call）：<br/></font><font color="#0000ff" size="2">Sub Call_aa_03()<br/>　　aa "喵喵"<br/>End Sub</font></p><p><font color="#000000" size="2">或者这样（带Call）：<br/></font><font color="#0000ff" size="2">Sub Call_aa_04()<br/>　　Call aa ("喵喵")<br/>End Sub</font></p><p><font size="2">这里值得注意的是，调用过程的名称如果在整个过程里不是唯一的，即其他模块也有相同名称的过程，那么在调用其他模块里的同名过程时，需要加上模块的名称，如模块1和模块2同时存在过程aa，在模块1里想调用模块2的过程aa，那么必须加上模块2做前缀，否则只会调用同模块下的aa：<br/></font><font color="#0000ff" size="2">Sub Call_aa_05()<br/>　　Call 模块2.aa<br/>End Sub</font></p><p><font size="2">如果aa是在另外一个工作簿里，需要先在VBE-工具-引用，添加引用的工作簿（通常会显示该工作簿的工程名称，如VBAProject1），再加上工程名加以调用，这里要注意，相互调用的工作簿是要打开的，而且工程名称不能重复，不然不能引用。如：<br/></font><font color="#0000ff" size="2">Sub call_aa_06()<br/>&nbsp;&nbsp;&nbsp; Call VBAProject1.模块2.aa<br/>End Sub</font></p><p><font size="2">同时，有多个过程aa时，一样需要加上模块名称，只有一个的话模块名称可省略：<br/></font><font color="#0000ff" size="2">Sub call_aa_07()<br/>&nbsp;&nbsp;&nbsp; Call VBAProject1.aa<br/>End Sub</font></p><p><font color="#ff00ff" size="4"><strong>【带变量调用】</strong></font></p><p><font size="2">好了，以上是传统的调用方法，如果过程名称aa是一个变量呢？我们注意到用Call语句，后面的过程名称不可以是变量，例如以下的调用是行不通的：<br/></font><font color="#0000ff" size="2">Sub Call_aa_08()<br/></font><font color="#0000ff" size="2">　　Dim str As String<br/></font><font color="#0000ff" size="2">　　str = "aa"<br/>　　Call str<br/>End Sub</font></p><p><font size="2">我们要用另一种方法，Application.run方法来调用过程名是变量的过程：<br/></font><font color="#0000ff" size="2">Sub Call_aa_09()<br/>&nbsp;&nbsp;&nbsp; Dim str As String<br/>&nbsp;&nbsp;&nbsp; str = "aa"<br/>&nbsp;&nbsp;&nbsp; Application.Run str<br/>End Sub</font></p><p><font size="2">如果用run方法来调用带参数的过程，则这样，多个参数用逗号分隔：<br/></font><font size="2"><font color="#0000ff">Sub Call_aa_10()<br/>&nbsp;&nbsp;&nbsp; Dim str As String<br/>&nbsp;&nbsp;&nbsp; str = "aa"<br/>&nbsp;&nbsp;&nbsp; Application.Run str, "喵喵"<br/>End Sub</font></font></p><p><font size="2">Run方法处理同名过程和Call语句不一样，只要在工作簿中存在相同的名称，即使是工作表里定义的名称，像上一个过程的写法就会报错（没有找到过程或者工程错误），也必须在过程名前加上模块名称（注意点不要漏了），如：<br/></font><font size="2"><font color="#0000ff">Sub Call_aa_11()<br/>&nbsp;&nbsp;&nbsp; Dim str As String<br/>&nbsp;&nbsp;&nbsp; str = "aa"<br/>&nbsp;&nbsp;&nbsp; Application.Run "模块2." & str, "喵喵"<br/>End Sub</font></font></p><p><font size="2">引用其他工作簿（该工作簿必须是打开的），如Book1里的过程则需要加上工作簿名称（注意引号不要漏了），如：<br/></font><font color="#0000ff" size="2">Sub Call_aa_12()<br/>&nbsp;&nbsp;&nbsp; Dim str As String<br/>&nbsp;&nbsp;&nbsp; str = "aa"<br/>&nbsp;&nbsp;&nbsp; Application.Run "Book1!模块2." & str, "喵喵"<br/>End Sub</font></p><br/>
<div align="right"><font color="#000066">[此贴子已经被作者于2009-12-1 2:56:41编辑过]</font></div>
]]></description></item><item><title>[原创]ExcelVBA调用Outlook对象</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=94678&amp;Page=1</link><author>uranus1997</author><pubDate>2009-10-13 4:47:00</pubDate><description><![CDATA[<p>本文起源自一位会员的求助（<a href="http://www.excelpx.com/dispbbs.asp?boardid=5&id=94580&star=1#94580" target="_blank">http://www.excelpx.com/dispbbs.asp?boardid=5&id=94580&star=1#94580</a>）</p><p>为了自动化Outlook，使Excel的VBA能调用Outlook对象，我们必须先访问Outlook的对象模型。也就是说，在Excel里操纵Outlook的对象，你必须首先能够让Excel“看到”它们。 通常有两种方法可以公开一个对象模型到Excel应用程序，称为前期绑定和后期绑定。&nbsp;</p><p>绑定的意思就是把客户端的对象模型开放给主程序，把他们强制性的联系在一起。这里我们就是指把Outlook对象模型开放给ExcelVBA主程序。&nbsp;<br/><br/><br/><strong><font face="黑体" color="#000000" size="5">前期绑定</font></strong></p><p>前期绑定，意思就是在你的程序运行前就已经进行了绑定，绑定的方法是在VBE编辑器里点击工具-引用，选上Microsoft Outlook 11.0 Object Library。（Outlook的版本不同，数字会有变化，我用的是2003，版本是11.0）&nbsp;<br/><br/><img src="http://www.excelpx.com/showimg.asp?BoardID=5&filename=2009-10/200910134422090945.jpg" border="0" onload="imgresize(this);" style="cursor: pointer;" alt="图片点击可在新窗口打开查看" onclick="javascript:window.open(this.src);"/><br/><br/><br/>以下一段代码是前期绑定后，打开收件箱第2封邮件的代码（按主题排序）：<br/><br/>&nbsp;<font color="#0000cc">Sub OpenMail_1()<br/>&nbsp;&nbsp;&nbsp; Dim myOlApp As New Outlook.Application<br/>&nbsp;&nbsp;&nbsp; Dim myNameSpace As Object<br/>&nbsp;&nbsp;&nbsp; Dim myFolder As Object<br/>&nbsp;&nbsp;&nbsp; Dim myItem As Object<br/><br/>&nbsp;&nbsp;&nbsp; Set myNameSpace = myOlApp.GetNamespace("MAPI")<br/>&nbsp;&nbsp;&nbsp; Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)<br/>&nbsp;&nbsp;&nbsp; Set myItem = myFolder.Items(2)<br/>&nbsp;&nbsp;&nbsp; myItem.Display<br/>End Sub<br/><br/><br/></font><strong><font face="黑体" color="#000000" size="5">后期绑定</font></strong></p><p>后期绑定就是在程序运行的时候才进行绑定，不需要事先引用Microsoft Outlook 11.0 Object Library，而是需要运用GetObject和CreateObject函数。&nbsp;<br/><br/>以下代码同样是实现：打开收件箱第2封邮件（按主题排序）：<br/><br/><font color="#0000cc">Sub OpenMail_2()<br/>&nbsp;&nbsp;&nbsp; Dim myOlApp As Object<br/>&nbsp;&nbsp;&nbsp; Dim myNameSpace As Object<br/>&nbsp;&nbsp;&nbsp; Dim myFolder As Object<br/>&nbsp;&nbsp;&nbsp; Dim myItem As Object<br/><br/><font size="2">&nbsp;&nbsp; </font><font color="#009933" size="2">&nbsp;'如果outlook已经打开，直接取Outlook实例，如果没有打开，则创建一个Outlook实例<br/>&nbsp;&nbsp;&nbsp; '（我不喜欢多打开一个Outlook窗口）<font color="#000000"><img title="dvubb" src="http://www.excelpx.com/Skins/Default/emot/em01.gif" border="0" align="middle" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/></font></font><br/>&nbsp;&nbsp;&nbsp; On Error Resume Next<br/>&nbsp;&nbsp;&nbsp; Set myOlApp = GetObject(, "Outlook.Application")<br/>&nbsp;&nbsp;&nbsp; If Err.Number = 429 Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set myOlApp = CreateObject("Outlook.application")<br/>&nbsp;&nbsp;&nbsp; End If<br/><br/>&nbsp;&nbsp;&nbsp; </font><font color="#0000cc">Set myNameSpace = myOlApp.GetNamespace("MAPI")<br/><font color="#009933" size="2">&nbsp;&nbsp;&nbsp; '后期绑定对象库的时候，GetDefaultFolder类型不能常量“olFolderInbox”表示<br/>&nbsp;&nbsp;&nbsp; '要用参考值来表示，olFolderInbox的参考值为6</font><br/>&nbsp;&nbsp;&nbsp; Set myFolder = myNameSpace.GetDefaultFolder(6)<br/>&nbsp;&nbsp;&nbsp; Set myItem = myFolder.Items(2)<br/>&nbsp;&nbsp;&nbsp; myItem.Display<br/><br/></font><font color="#0000cc">End Sub<br/><br/><br/></font><font color="#000000"><strong>这里有一个小小的不同之处：</strong></font>&nbsp;<br/><br/><font color="#0000cc"><font color="#000000">前期绑定用的是 <font color="#0000cc">GetDefaultFolder(olFolderInbox)</font><br/>后期绑定用的是 </font><font color="#0000cc">GetDefaultFolder(6)</font></font></p><p><font color="#0000cc"></font>&nbsp;<font color="#0000cc"><font color="#000000">olFolderInbox是Outlook的一个内置对象模型，在后期绑定对象库的时候不会开放给Excel，不能被ExcelVBA识别，因此不能用常量的形式（olFolderInbox）表示，只能用参考值（6）来表示。</font></font>&nbsp;</p><p><font color="#0000cc"><font color="#000000">从以上看来，前期绑定的代码更容易进行理解和调试，但是，当我们要共享文档的时候，就会出现问题了，因为不能保证每个人用的Outlook版本都和你的一样，如果不一样的话，对象库也会不一样，这时用前期绑定的程序就会报错。而用后期绑定的话，可以不用理会别人的版本是什么，都可以运行。因此我会更喜欢用后期绑定</font></font><img title="dvubb" src="http://www.excelpx.com/Skins/Default/emot/em01.gif" border="0" align="middle" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/></p>
<div align="right"><font color="#000066">[此贴子已经被作者于2009-10-13 5:01:50编辑过]</font></div>
]]></description></item><item><title>[讨论]选择性粘贴的VBA实现方法</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=62651&amp;Page=1</link><author>不怎么样</author><pubDate>2008-7-15 0:48:00</pubDate><description><![CDATA[<p><font size="4">选择性粘贴是工作表操作经常使用的功能，那么用VBA代码如何实现选择性粘贴的功能呢？</font></p><p><font size="4">根据VBA代码帮助文件和实际需要，自己总结了选择性粘贴VBA代码的语法和实例。</font></p><p>&nbsp;</p><p></p><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:center;"><span style="font-size:18pt;font-family:宋体;"><span lang="EN-US"><p></p></span></span>&nbsp;</p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';"><font color="#ff6600" size="4"><strong>一、语法</strong></font></span><span lang="EN-US" style="font-size:15pt;"><p></p></span></p><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-outline-level:1;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:18.0pt;mso-bidi-font-family:宋体;">PasteSpecial </span></b><b><span style="font-size:12pt;font-family:宋体;mso-font-kerning:18.0pt;mso-bidi-font-family:宋体;">方法<span lang="EN-US"><p></p></span></span></b></font></p><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"><span style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;"><font color="#000000">解释：将剪贴板中的 <b><span lang="EN-US">Range</span></b><span lang="EN-US">
				</span>对象粘贴到指定区域中。<span lang="EN-US"><p></p></span></font></span></p><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"><span style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;"><font color="#000000">语法：<span lang="EN-US">expression.<b>PasteSpecial</b>(<b>Paste</b>, <b>Operation</b>, <b>SkipBlanks</b>, <b>Transpose</b>)<p></p></span></font></span></p><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"><font color="#000000"><i><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">expression&nbsp;&nbsp;&nbsp;</span></i><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">&nbsp;&nbsp; </span><span style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">必需。该表达式返回一个 <b><span lang="EN-US">Range</span></b><span lang="EN-US">
				</span>对象。<span lang="EN-US"><p></p></span></span></font></p><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">Paste&nbsp;</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">&nbsp;&nbsp;&nbsp;&nbsp; XlPasteType </span><span style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">类型，可选。指定要粘贴的区域部分。<span lang="EN-US"><p></p></span></span></font></p><table class="MsoNormalTable" cellpadding="0" border="0" style="mso-cellspacing:1.5pt;"><tbody><tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">XlPasteType </span><span style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">可为以下<span lang="EN-US"> XlPasteType </span>常量之一。<span lang="EN-US"><p></p></span></span></font></p></td></tr><tr style="mso-yfti-irow:1;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteAll</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">
							</span><span style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">默认值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '全部</span></font></p></td></tr><tr style="mso-yfti-irow:2;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteAllExceptBorders&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;’边框除外</span></b></font></p></td></tr><tr style="mso-yfti-irow:3;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteColumnWidths&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;’列宽</span></b></font></p></td></tr><tr style="mso-yfti-irow:4;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteComments&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;’批注</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;"><p></p></span></font></p></td></tr><tr style="mso-yfti-irow:5;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteFormats&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;‘格式</span></b></font></p></td></tr><tr style="mso-yfti-irow:6;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteFormulas&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ’公式</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;"><p></p></span></font></p></td></tr><tr style="mso-yfti-irow:7;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteFormulasAndNumberFormats&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘公式和数字格式</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;"><p></p></span></font></p></td></tr><tr style="mso-yfti-irow:8;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteValidation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ’有效性验证</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;"><p></p></span></font></p></td></tr><tr style="mso-yfti-irow:9;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteValues&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘数值</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;"><p></p></span></font></p></td></tr><tr style="mso-yfti-irow:10;mso-yfti-lastrow:yes;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteValuesAndNumberFormats&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;’值和数字格式</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;"><p></p></span></font></p></td></tr></tbody></table><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">Operation</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XlPasteSpecialOperation </span><span style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">类型，可选。指定粘贴操作。<span lang="EN-US"><p></p></span></span></font></p><table class="MsoNormalTable" cellpadding="0" border="0" style="mso-cellspacing:1.5pt;"><tbody><tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">XlPasteSpecialOperation </span><span style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">可为以下<span lang="EN-US"> XlPasteSpecialOperation </span>常量之一。<span lang="EN-US"><p></p></span></span></font></p></td></tr><tr style="mso-yfti-irow:1;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteSpecialOperationAdd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;‘加</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;"><p></p></span></font></p></td></tr><tr style="mso-yfti-irow:2;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteSpecialOperationDivide&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; ’除</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;"><p></p></span></font></p></td></tr><tr style="mso-yfti-irow:3;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteSpecialOperationMultiply&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘乘</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;"><p></p></span></font></p></td></tr><tr style="mso-yfti-irow:4;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteSpecialOperationNone</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">
							</span><span style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">默认值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘无</span></font></p></td></tr><tr style="mso-yfti-irow:5;mso-yfti-lastrow:yes;"><td style="border-right:#ece9d8;padding-right:0.75pt;border-top:#ece9d8;padding-left:0.75pt;padding-bottom:0.75pt;border-left:#ece9d8;padding-top:0.75pt;border-bottom:#ece9d8;background-color:transparent;"><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">xlPasteSpecialOperationSubtract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘减</span></b></font></p></td></tr></tbody></table><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">SkipBlanks</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Variant</b>
			</span><span style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">类型，可选。若为 <b><span lang="EN-US">True</span></b>，则不将剪贴板上区域中的空白单元格粘贴到目标区域中。默认值为 <b><span lang="EN-US">False</span></b>。<span lang="EN-US"><p></p></span></span></font></p><p class="MsoNormal" align="left" style="margin:0cm 0cm 0pt;text-align:left;mso-pagination:widow-orphan;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;"><font color="#000000"><b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">Transpose</span></b><span lang="EN-US" style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Variant</b>
			</span><span style="font-size:12pt;font-family:宋体;mso-font-kerning:0pt;mso-bidi-font-family:宋体;">类型，可选。若为 <b><span lang="EN-US">True</span></b>，则粘贴区域时转置行和列。默认值为 <b><span lang="EN-US">False</span></b>。<span lang="EN-US"><p></p></span></span></font></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';"><font color="#f76809" size="4"></font></span>&nbsp;</p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';"><font color="#f76809" size="4">二、语法图示说明</font></span><span lang="EN-US" style="font-size:15pt;"><p></p></span></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span lang="EN-US" style="font-size:15pt;"><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" opreferrelative="t" ospt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path gradientshapeok="t"></path><lock aspectratio="t" vext="edit"></lock></shapetype><p></p></span></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';"><font color="#ff6600" size="4"></font></span>&nbsp;<br/><img title="dvubb" src="skins/default/filetype/bmp.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/>此主题相关图片如下：<br/><a href="showimg.asp?BoardID=5&filename=2008-7/20087150381544553.bmp" target="_blank"><img title="dvubb" src="showimg.asp?BoardID=5&filename=2008-7/20087150381544553.bmp" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/></a></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';"><font color="#ff6600" size="4">三、示例</font></span></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';"><font color="#ff6600" size="4"></font></span><span lang="EN-US" style="font-size:15pt;"><p></p></span>&nbsp;</p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">Sub </font></span><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';">选择性粘贴</span><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">1()<span style="mso-spacerun:yes;">&nbsp; </span>'</font></span><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';">将</span><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">E4</font></span><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';">单元格的公式复制，并选择性粘贴到</span><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">E4</font></span><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';">单元格</span><span lang="EN-US" style="font-size:15pt;"><p></p></span></font></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman"><font size="3"><span style="mso-spacerun:yes;">&nbsp;&nbsp;&nbsp; </span>Range("A4").Copy<p></p></font></font></span></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman"><font size="3"><span style="mso-spacerun:yes;">&nbsp;&nbsp;&nbsp; </span>Range("e4").PasteSpecial Paste:=xlPasteValues<p></p></font></font></span></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman"><font size="3">End Sub</font></font></span></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman"><font size="3"><p></p></font></font></span>&nbsp;</p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">Sub </font></span><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';">选择性粘贴</span><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">2()<span style="mso-spacerun:yes;">&nbsp; </span>'</font></span><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';">将</span><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">C4</font></span><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';">单元格的值与</span><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">e2:E4</font></span><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';">单元格的和粘贴到</span><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">E2:E4<p></p></font></span></font></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman"><font size="3"><span style="mso-spacerun:yes;">&nbsp;&nbsp;&nbsp; </span>Range("C4").Copy<p></p></font></font></span></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman"><font size="3"><span style="mso-spacerun:yes;">&nbsp;&nbsp;&nbsp; </span>Range("E2:E4").PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd<p></p></font></font></span></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman"><font size="3">End Sub</font></font></span></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman"><font size="3"><p></p></font></font></span>&nbsp;</p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">Sub </font></span><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';">选择性粘贴</span><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">3()<span style="mso-spacerun:yes;">&nbsp;&nbsp;&nbsp; </span>'</font></span><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';">将</span><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">A2:A6</font></span><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';">单元格的内容转置粘贴到以</span><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman">D8</font></span><span style="font-size:15pt;font-family:宋体;mso-ascii-font-family:'times new roman';mso-hansi-font-family:'times new roman';">开始的单元格区域</span><span lang="EN-US" style="font-size:15pt;"><p></p></span></font></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman"><font size="3"><span style="mso-spacerun:yes;">&nbsp;&nbsp;&nbsp; </span>Range("A2:B6").Copy<p></p></font></font></span></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman"><font size="3"><span style="mso-spacerun:yes;">&nbsp;&nbsp;&nbsp; </span>Range("D8").PasteSpecial Transpose:=True<p></p></font></font></span></p><p class="MsoNormal" style="margin:0cm 0cm 0pt;"><span lang="EN-US" style="font-size:15pt;"><font face="Times New Roman"><font size="3">End Sub<p></p></font></font></span></p><br/>]]></description></item><item><title>[原创]VBA数组下标和上界，下界的一些概念</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=59362&amp;Page=1</link><author>uranus1997</author><pubDate>2008-6-30 2:31:00</pubDate><description><![CDATA[<p>最近给VBA入门班上课，真是汗颜，发现一个常见的数组下标概念竟然模糊不清，之后请教了我家耗子，才算是搞清楚了，特别写出来，供大家参考，这仅仅是我自己理解的东西，如有不当，恳请跟贴指正。<br/><br/>以下附件为本文的Excel版本：</p><p></p><p><img title="dvubb" src="skins/default/filetype/rar.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/><a href="viewFile.asp?BoardID=5&ID=56682" target="_blank">点击浏览该文件</a></p><p><br/><br/><font color="#cc00ff" size="4"><strong>一，数组的下标</strong></font><br/>在VBA里，一个数组是有一定的大小和维数的，而用来标识数组的这些属性的数字，就叫数组的<font color="#ff0000"><strong>下标</strong></font>,一般是用括号括起来，写在数组的右边<br/>数组的一般表示方法是：</p><p><font color="#0000ff">数组名称（下标1，下标2，下标3.....）<br/><br/></font><font color="#ff0000">在这里，每一个下标表示一个维度，用逗号分隔，下标个数代表数组维数<br/></font>VBA数组最多可以定义60个维度，即后面可以跟60个下标<br/><font color="#ff0000">注意：数组是没有“上标”这个概念的</font><br/><br/>每个下标，都有一定范围，来指示该维度的大小<br/>这个范围靠小的那边，称为这个下标的<font color="#ff0000"><strong>下界</strong></font>（最小下标）；靠大的那边，称为这个下标的<font color="#ff0000"><strong>上界</strong></font>（最大下标）<br/><br/>下标的表示方式基本上有两种：<br/><br/><strong>1. 单个大于等于0的整数表示下标，这时</strong>&nbsp;<br/><br/>该维的下界（最小下标）：默认为0；&nbsp;<br/>该维的上界（最大下标）：这个整数；&nbsp;<br/>该维的元素的个数：（这个整数+1）；&nbsp;<br/><br/>该数组元素的个数为：各维个数的乘积。&nbsp;<br/><br/><strong>arr(4)</strong>&nbsp;<br/>——表示这个数组只有一维，下标是4，下界是0，上界是4，数组的元素个数是5&nbsp;<br/><br/>&nbsp;运行以下代码，在本地窗口显示数组的元素组成（Alt+F11调出VBE编辑器，然后在“视图”菜单中调出本地窗口）<br/>&nbsp;Ubound函数返回数组的上界<br/>&nbsp;Lbound函数返回数组的下界<br/><br/><font color="#0000ff">&nbsp;Sub aa()<br/>&nbsp;&nbsp;&nbsp;&nbsp; Dim arr(4)<br/>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox UBound(arr)<br/>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox LBound(arr)<br/>&nbsp;&nbsp;&nbsp;&nbsp; Stop<br/>&nbsp;End Sub<br/><br/></font><img src="http://www.excelpx.com/UploadFile/2008-6/20086302224298616.jpg" border="0" onload="imgresize(this);" style="cursor: pointer;" alt="图片点击可在新窗口打开查看" onclick="javascript:window.open(this.src);"/>&nbsp;<br/><strong><br/>arr(1,2)&nbsp;<br/></strong>——表示这个数组有两维，第一维下标是1，下界是0，上界是1；第二维下标是2，下界是0，上界是2；该数组的元素个数是（1+1）×（2+1）=6&nbsp;<br/><br/>&nbsp;运行以下代码，在本地窗口显示数组的元素组成（Alt+F11调出VBE编辑器，然后在“视图”菜单中调出本地窗口）<br/>&nbsp;Ubound函数返回数组的上界,后面的参数代表返回第几维<br/>&nbsp;Lbound函数返回数组的下界,后面的参数代表返回第几维<br/><br/>&nbsp;<font color="#0033ff">Sub bb()<br/>&nbsp;&nbsp;&nbsp;&nbsp; Dim arr(1, 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox UBound(arr) & "," & UBound(arr, 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox LBound(arr) & "," & LBound(arr, 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp; Stop<br/>&nbsp;End Sub<br/><br/></font><strong><img src="http://www.excelpx.com/UploadFile/2008-6/2008630224313524.jpg" border="0" onload="imgresize(this);" style="cursor: pointer;" alt="图片点击可在新窗口打开查看" onclick="javascript:window.open(this.src);"/><br/><br/>arr（1,0,2)&nbsp;<br/></strong>——表示该数组有三维，第一维下标是1，下界是0，上界是1；第二维下标是0，下界是0，上界是0；第三维下标是2，下界是0，上界是2；该数组的元素个数是（1+1）×（0+1）×（2+1）=6&nbsp;<br/><br/>&nbsp;运行以下代码，在本地窗口显示数组的元素组成（Alt+F11调出VBE编辑器，然后在“视图”菜单中调出本地窗口）<br/>&nbsp;Ubound函数返回数组的上界,后面的参数代表返回第几维<br/>&nbsp;Lbound函数返回数组的下界,后面的参数代表返回第几维<br/><br/>&nbsp;<font color="#0000ff">Sub cc()<br/>&nbsp;&nbsp;&nbsp;&nbsp; Dim arr(1, 0, 2)<br/>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox UBound(arr) & "," & UBound(arr, 2) & "," & UBound(arr, 3)<br/>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox LBound(arr) & "," & LBound(arr, 2) & "," & LBound(arr, 3)<br/>&nbsp;&nbsp;&nbsp;&nbsp; Stop<br/>&nbsp;End Sub<br/><br/></font><strong><img src="http://www.excelpx.com/UploadFile/2008-6/2008630224396067.jpg" border="0" onload="imgresize(this);" style="cursor: pointer;" alt="图片点击可在新窗口打开查看" onclick="javascript:window.open(this.src);"/><br/><br/>2，以区间表示下标，格式为 ：（下界 to 上界），这时<br/><br/></strong>该维的下界（最小下标）：下界；<br/>该维的上界（最大下标）：上界；<br/>该维的元素的个数：上界-下界+1；<br/><br/>该数组元素的个数为：各维个数的乘积。<br/><br/><strong>arr(1 to 3)<br/></strong>——表示这个数组只有一维，下标是“1 to 3”，下界是1，上界是3，数组的元素个数是（3-1+1）=3</p><p>&nbsp;运行以下代码，在本地窗口显示数组的元素组成（Alt+F11调出VBE编辑器，然后在“视图”菜单中调出本地窗口）<br/>&nbsp;Ubound函数返回数组的上界,后面的参数代表返回第几维<br/>&nbsp;Lbound函数返回数组的下界,后面的参数代表返回第几维<br/><br/>&nbsp;<font color="#0000ff">Sub dd()<br/>&nbsp;&nbsp;&nbsp;&nbsp; Dim arr(1 To 3)<br/>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox UBound(arr)<br/>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox LBound(arr)<br/>&nbsp;&nbsp;&nbsp;&nbsp; Stop<br/>&nbsp;End Sub<br/><br/><img src="http://www.excelpx.com/UploadFile/2008-6/2008630224397209.jpg" border="0" onload="imgresize(this);" style="cursor: pointer;" alt="图片点击可在新窗口打开查看" onclick="javascript:window.open(this.src);"/><br/><br/></font><strong>arr(1 to 3,3 to 4, -1 to 1)</strong>&nbsp;<br/>——&nbsp;表示该数组有三维，第一维下标是“1 to 3”，下界是1，上界是3；第二维下标是“3 to 4”，下界是3，上界是4；第三维下标是“-1 to 1”，下界是-1，上界是1；&nbsp;该数组的元素个数是（3-1+1）×（4-3+1）×（1-（-1）+1）=18<br/><br/>&nbsp;运行以下代码，在本地窗口显示数组的元素组成（Alt+F11调出VBE编辑器，然后在“视图”菜单中调出本地窗口）<br/>&nbsp;Ubound函数返回数组的上界,后面的参数代表返回第几维<br/>&nbsp;Lbound函数返回数组的下界,后面的参数代表返回第几维<br/><br/><font color="#0000ff">&nbsp;Sub ee()<br/>&nbsp;&nbsp;&nbsp;&nbsp; Dim arr(1 To 3, 3 To 4, -1 To 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox UBound(arr) & "," & UBound(arr, 2) & "," & UBound(arr, 3)<br/>&nbsp;&nbsp;&nbsp;&nbsp; MsgBox LBound(arr) & "," & LBound(arr, 2) & "," & LBound(arr, 3)<br/>&nbsp;&nbsp;&nbsp;&nbsp; Stop<br/>&nbsp;End Sub<br/><br/><img src="http://www.excelpx.com/UploadFile/2008-6/2008630224342778.jpg" border="0" onload="imgresize(this);" style="cursor: pointer;" alt="图片点击可在新窗口打开查看" onclick="javascript:window.open(this.src);"/><br/><br/></font><font color="#cc00ff" size="4"><strong>二，数组元素的下标</strong></font></p><p>数组的每个元素，也分别有自己的下标，当声明了一个固定范围的数组后，其每个元素的下标也同时确定了</p><p>元素的下标标识了元素在数组中的相对位置，要知道元素的绝对位置，必须要知道该维度的下界是多少，然后用下标减去下界，得出该元素在该维度的绝对位置</p><p>元素某维度的绝对位置 = 该维度的下标 - 该维度的下界 + 1</p><p>看上面最后一个例子，我们随便抽出一个元素来看，如arr(3,4,0)这个元素<br/><br/>3代表他在第一维的绝对位置是3，因为第一维的下界是1，<br/>4代表第二维的绝对位置是2，因为第儿维的下界为3，<br/>0代表第三维的绝对位置为2，因为第三维的下界是-1<br/></p><br/>
<div align="right"><font color="#000066">[此贴子已经被作者于2008-6-30 2:37:40编辑过]</font></div>
]]></description></item><item><title>[分享]图解部署VSTO</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=41921&amp;Page=1</link><author>element</author><pubDate>2008-3-13 17:28:00</pubDate><description><![CDATA[<font face="宋体">虽然</font>
<div align="right"><font color="#000066">[此贴子已经被作者于2010-1-28 13:51:20编辑过]</font></div>
]]></description></item><item><title>MSDN里的Application对象文章</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=39890&amp;Page=1</link><author>八月的梦游者</author><pubDate>2008-3-2 16:28:00</pubDate><description><![CDATA[<p>最近MSDN里面发表了两个关于Application对象和Range对象的文章，虽然标题说是Excel 2007 Application对象和Range对象，但实际上可以通用到Excel 2003的。内容是英语的，抽点时间翻译出来共享一下。有些关键字不知道怎么翻译，所有感觉总有点怪怪的，高手帮忙指正一下。</p><p><strong><font color="#0000ff" size="3">Excel 2007 Application对象开发指南</font></strong><br/><a href="http://msdn2.microsoft.com/en-us/library/bb978780.aspx" target="_blank">http://msdn2.microsoft.com/en-us/library/bb978780.aspx</a></p><p><strong>概述<br/></strong>Application对象是Microsoft Office Excel 2007对象模型中最高级别的对象，表示Excel程序自身。Application对象提供正在运行的程序的信息、应用于程序实例的选项以及实例中打开的当前对象。因为它是对象模型中最高的对象，Application对象也包含组成一个工作簿的很多部件，包括如工作簿、工作表集合、单元格以及这些对象包含的数据等。</p><p>Application对象包含：<br/>* 程序范围的设置和选项。这些选项大部分同“工具”菜单下的“选项”对话框里的内容相同。<br/>* 顶级对象返回的方法，如ActiveCell、ActiveSheet等。</p><p>在下面几节里，你将通过使用VBA代码示例学习到一些Application对象中经常使用到的对象、方法和属性。关于Application对象模型所有成员的详细资料，请参考<a href="http://msdn2.microsoft.com/en-us/library/bb255823.aspx" target="_blank">http://msdn2.microsoft.com/en-us/library/bb255823.aspx</a>。</p><p><br/><strong>Application对象中其它对象的表示方法<br/></strong>你可以使用Application属性返回Application对象。获取一个Application对象后，如需访问它下面的对象，可以在对象模型层级中往下移动。下面示例设置一个工作表的第一个单元格内容为20.</p><div class="quote">Application.Workbooks(1).Worksheets(1).Cells(1,1)=20</div><p>要表示一个单元格，代码示例从Application对象开始，移到第一个工作簿，再移到第一个工作表，最后到这个单元格。</p><p>下面示例在另一个Excel程序中创建一个Excel工作簿对象，然后打开一个工作簿。</p><div class="quote">Set xl=CreateObject("Excel.Sheet")<br/>xl.Application.Workbooks.Open "newbook.xls"<br/></div><p>不需要使用“Application”限定词，很多的属性和方法也可以直接被用来返回那些最常用的用户界面对象，如活动工作表(ActiveSheet属性)。例如，除了使用Application.ActiveSheet.Name = "Monthly Sales",你也可以使用ActiveSheet.Name = "Monthly Sales"。然而，当使用这个简便表示方法时必需小心，需要选择正确的对象。例如通过使用Worksheet对象的Activate方确定你选择了正确的工作簿和工作表后，你可以使用Cell(1,1)表示第一个单元格。</p><p>有几种情况你必需使用Application限定词。例如，OnTime对象(本文后面部分将讨论)需要这个限定词，还有程序窗口的Width和Height属性。一般来说，用来处理Excel窗口的外观或影响程序全局行为的属性或方法需要使用Application限定词；例如，DisplayFormlaBar属性用来显示或隐藏公式栏，Calculation方法也需要限定词。</p>]]></description></item><item><title>[分享]VBA提取网页数据(4种方法)</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=38841&amp;Page=1</link><author>uranus1997</author><pubDate>2008-2-25 4:49:00</pubDate><description><![CDATA[<p>嗯，是398部长交给我的一个小练习，发上来共享一下，之后就等398部长来解说吧。</p><p>一共做了4个方法，期间多谢八月梦游的帮助和提点。</p><p>题目是提取以下网页里的店铺名称和地址：（没做提取多页的，偷懒<img title="dvubb" src="http://www.excelpx.com/Skins/Default/emot/em04.gif" border="0" align="middle" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/>）</p><p><a href="http://bendi.koubei.com/search/searchstore.html?option.cityname=%CE%C2%D6%DD&option.category=4&option.distance=2000&pageNo=1" target="_blank">http://bendi.koubei.com/search/searchstore.html?option.cityname=%CE%C2%D6%DD&option.category=4&option.distance=2000&pageNo=1</a></p><p>1.&nbsp; <font color="#0000ff">XMLHTTP对象</font>，速度不错，受网页源代码改变影响，但是处理网页源文件最方便自由。</p><p>2. <font color="#0000ff">InternetExplorer对象</font>，速度一般，受网页源代码改变影响，还需要激活IE，不喜欢。</p><p>3. <font color="#0000ff">QueryTables对象</font>，平均速度最快，而且基本不受网页源代码改变影响，就是想获取多页数据的时候麻烦，而且多了一个web查询区域需要删除。</p><p>4. <font color="#0000ff">WebBrowser对象</font>，第一次速度次于XMLHTTP，之后就很快，受网页源代码改变影响，原理同InternetExplorer，就是多了个控件在工作表上不好看，只能靠缩小控件来隐藏。</p><p>4种方法各有优劣，看实际情况来选取合适的方法了。</p><p>个人觉得网页提取数据，没有什么技巧可言，归根到底，原理基本都是提取网页的源代码然后进行分析处理。</p><p>在VBA里，可能用字符串处理的办法更容易理解，其实也可以用获取网页元素的办法，例如第2和第4种方法，就用了一些这样的技巧，但由于对网页的元素不太熟悉，因此如果要方便的方法，还需要多了解网页的结构和代码才行了。</p><p>PS：记得看我家耗子写的火狐浏览器脚本，似乎也只能用枚举办法列出不同网页其源码的共同地方来写，想100%通用似乎很难啊。</p><p>&nbsp;</p><p>&nbsp;第一次附件：</p><p><img title="dvubb" src="skins/default/filetype/rar.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/><a href="viewFile.asp?BoardID=5&ID=38671" target="_blank">点击浏览该文件</a></p><p>重新上传：&nbsp;</p><p><img title="dvubb" src="skins/default/filetype/rar.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/><a href="viewFile.asp?BoardID=5&ID=38688" target="_blank">点击浏览该文件</a></p><p>08-7-14日重新上传：</p><p><img title="dvubb" src="skins/default/filetype/rar.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/><a href="viewFile.asp?BoardID=5&ID=58899" target="_blank">点击浏览该文件</a><br/></p><p>&nbsp;</p><p>=====================================</p><p>由于网页源码有所改变，08-7-14日重新修改后上传。</p><br/>
<div align="right"><font color="#000066">[此贴子已经被作者于2008-7-14 2:28:17编辑过]</font></div>
]]></description></item><item><title>doevent帮助</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=38304&amp;Page=1</link><author>newborn</author><pubDate>2008-2-21 19:18:00</pubDate><description><![CDATA[如题，求助<br/><div align="right"><font color="#000066">[此贴子已经被zjxia889于2008-2-24 15:01:13编辑过]</font></div><br/>]]></description></item><item><title>[组装]【聚宝瓶】邻家有女初长成--我的工具箱</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=38070&amp;Page=1</link><author>hhzjxss</author><pubDate>2008-2-20 13:05:00</pubDate><description><![CDATA[<p><font size="4">工作中经常要用到一些工作技巧，在论坛也经常看到好的工具，就收藏了不少，加上一些自己制作的工具！</font></p><p><font size="4">就组装成了这个我的自定义工具箱--【XSS 聚宝瓶 1.0】。</font></p><p><font size="4">代码尚未完善，先传人界面给大家看看！</font></p><p>&nbsp;有★★★★的菜单是还没有写好代码的！</p><p></p><p>操作界面：</p><p><br/><img title="dvubb" src="skins/default/filetype/gif.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/>此主题相关图片如下：<br/><a href="showimg.asp?BoardID=5&filename=2008-3/20083811341581230.gif" target="_blank"><img title="dvubb" src="showimg.asp?BoardID=5&filename=2008-3/20083811341581230.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/></a></p><p></p><p>动画演示：</p><p><br/><br/><img title="dvubb" src="skins/default/filetype/gif.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/>此主题相关图片如下：<br/><a href="showimg.asp?BoardID=5&filename=2008-2/2008220135681878.gif" target="_blank"><img title="dvubb" src="showimg.asp?BoardID=5&filename=2008-2/2008220135681878.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/></a><br/></p><p></p><p><font color="#1111ee" size="4"><strong>[部分代码已在后面帖子里分别贴出！]</strong></font></p><p><strong><font color="#1111ee" size="4"></font></strong></p><p></p><div style="float:left;"><a title="[原创]分享--【聚宝瓶】--系列工具" href="http://www.excelpx.com/dispbbs.asp?BoardID=5&ID=42851&replyID=&skin=1" target="_blank"><font color="#f70938" style="font-size:15px;">[原创]分享--【聚宝瓶】--系列工具</font></a><font color="#f70938">
			<br/>作者：</font><a href="http://www.excelpx.com/dispuser.asp?id=1869" target="_blank"><font color="#f70938">hhzjxss</font></a><font color="#f70938">&nbsp;&nbsp; 浏览：265&nbsp;&nbsp; 回复：8&nbsp;&nbsp;→ &nbsp;&nbsp;</font><a href="http://www.excelpx.com/index.asp?boardid=5" target="_blank"><font color="#f70938"><b>『VBA程序开发』</b>
			</font></a><font color="#f70938">2008-3-18 14:28:00&nbsp;&nbsp; <hr style="border-top:#b3b3b3 1px dashed;width:98%;border-bottom:0px;height:0px;"/><hr/></font></div><p><font color="#f70938" size="4"><strong></strong></font></p><p><font color="#f70938" size="4"><strong></strong></font></p><p><font size="4"><font color="#33cc33"><strong></strong></font></font></p><p><font size="4"><font color="#33cc33"><strong><a href="http://www.excelpx.com/dispbbs.asp?boardid=5&ID=39484&replyID=39484" target="_blank"></a></strong></font></font></p>
<div align="right"><font color="#000066">[此贴子已经被作者于2008-4-1 21:22:59编辑过]</font></div>
]]></description></item><item><title>【翻译】在VBA中使用API函数</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=35543&amp;Page=1</link><author>八月的梦游者</author><pubDate>2008-1-14 23:16:00</pubDate><description><![CDATA[<p>这个是比较久之前翻译的一个小东西，介绍API函数的，希望对有兴趣学习API的会员们带给一点帮助。</p><p>不过据看过的人说，翻译得不够清楚，问题是我自己也没怎么搞懂这个。</p><p><img title="dvubb" src="skins/default/filetype/rar.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/><a href="viewFile.asp?BoardID=5&ID=35653" target="_blank">点击浏览该文件</a><br/></p>]]></description></item><item><title>网上搜集的，电子时钟，发上来给大家 （ excel+类模块）</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=31942&amp;Page=1</link><author>leolee82</author><pubDate>2007-11-28 0:32:00</pubDate><description><![CDATA[不知道有人发过没有<br/><img title="dvubb" src="skins/default/filetype/rar.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/><a href="viewFile.asp?BoardID=5&ID=30776" target="_blank">点击浏览该文件</a><br/>
<div align="right"><font color="#000066">[此贴子已经被ldy于2007-11-28 10:31:19编辑过]</font></div>
]]></description></item><item><title>SQL基本操作语句</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=31518&amp;Page=1</link><author>烟雨江南</author><pubDate>2007-11-21 22:45:00</pubDate><description><![CDATA[本贴将作为SQL基本操作语句讲解的一个专题贴]]></description></item><item><title>[分享]一个整合的类教程和关于类的网页</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=28708&amp;Page=1</link><author>uranus1997</author><pubDate>2007-10-13 0:01:00</pubDate><description><![CDATA[<p>虽然偶是菜鸟，依旧学习下！谢谢！</p><p><img title="dvubb" src="http://www.excelpx.com/Skins/Default/emot/em23.gif" border="0" align="middle" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/><img title="dvubb" src="http://www.excelpx.com/Skins/Default/emot/em23.gif" border="0" align="middle" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/></p>]]></description></item><item><title>[原创分享] 一些工作表实例</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=25623&amp;Page=1</link><author>HYY514</author><pubDate>2007-9-3 6:40:00</pubDate><description><![CDATA[<p>分享我以前做的一些实例，改了下发上来，觉得有用的就下：</p><p>调用文件夹图片：</p><p>将工作簿和图片夹解压到同一路径下。</p><p>&nbsp;</p><p><img title="dvubb" src="skins/default/filetype/rar.gif" border="0" onload="imgresize(this);" alt="图片点击可在新窗口打开查看"/><a href="viewFile.asp?BoardID=5&ID=22020" target="_blank">点击浏览该文件</a><br/></p>
<div align="right"><font color="#000066">[此贴子已经被作者于2007-10-22 2:37:13编辑过]</font></div>
]]></description></item><item><title>兰色原创：工作表中选取区域另存为图片的代码</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=25322&amp;Page=1</link><author>兰色幻想</author><pubDate>2007-8-30 18:20:00</pubDate><description><![CDATA[沙发]]></description></item><item><title>[求助]ByVal还是ByRef？</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=21202&amp;Page=1</link><author>V20</author><pubDate>2007-7-8 10:37:00</pubDate><description><![CDATA[<p>Private Sub Worksheet_SelectionChange(ByVal Target As Range)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Target = 111<br/>End Sub</p><p><br/>上面的参数，是按值还是按地址？</p><p>恳请说明原因，谢！</p>]]></description></item><item><title>[精英VBA专题]字符串用法大全(整理中,请参与进来)</title><link>http://www.excelpx.com/dispbbs.asp?BoardID=5&amp;ID=8822&amp;Page=1</link><author>chenhuafu</author><pubDate>2006-10-9 17:03:00</pubDate><description><![CDATA[<p><strong>查找一个字符串是否都是字母并且最后一个字符是否是“E</strong></p><p>Sub T()<br/>&nbsp;&nbsp;&nbsp; Dim UseInput&nbsp;&nbsp;&nbsp; As String<br/>&nbsp;&nbsp;&nbsp; Dim myReg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As Object<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; UseInput = VBA.LCase(InputBox("输入的字符必须都是字母并且最后一个字符是“e”或者“E”", "请输入字符"))<br/>&nbsp;&nbsp;&nbsp; '或者是使用忽略大小写参数为真,可去除VBA.Lcase()&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; myReg.IgnoreCase = True<br/>&nbsp;&nbsp;&nbsp; Set myReg = CreateObject("Vbscript.RegExp")<br/>&nbsp;&nbsp;&nbsp; myReg.Global = True<br/>&nbsp;&nbsp;&nbsp; myReg.Pattern = "^[a-z]*e$"<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; If myReg.Test(UseInput) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "你输入的字符符合要求"<br/>&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "输入的字符必须都是字母并且最后一个字符是“e”或者“E”"<br/>&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; Set myReg = Nothing<br/>&nbsp;&nbsp;&nbsp; <br/>End Sub</p>
<div align="right"><font color="#000066">[此贴子已经被作者于2007-3-4 17:34:28编辑过]</font></div>
]]></description></item></channel></rss>
