EXCEL VBA
laoyebin
我自横刀向天笑无人知是荔枝来
展开
-
VBA中的REPLACE函数的问题
今天见到EH一位会员问一个REPLACE函数的问题,原文如下: 代码: Sub Macro2() s = "---" s = Replace(s, "-", "=", 2, 1) Debug.Print s End Sub 立即窗口中显示的是"=-"而不是"-=-" 为什么会少一个字符啊? 这确原创 2009-11-27 23:46:00 · 10302 阅读 · 0 评论 -
EXCEL从ACCESS中取值
ACCESS数据库界面:EXCEL的窗体界面:窗体中的代码:Private Sub ComboBox1_Change() Dim cn As Object, sql$, arr, i& Set cn = CreateObject("adodb.connection") cn.Open "provider=Microsoft.jet.原创 2010-03-03 22:04:00 · 1476 阅读 · 0 评论 -
在EXCEL中列出OUTLOOK收件箱里所有的邮件
首先需引用你所用的OUTLOOK版本的库(2003为11.0,2007 12.0,2010 14.0) Sub showAllEmails() Dim OLF As Outlook.MAPIFolder Dim Emails&, i&, k& Dim arr Application.ScreenUpdating = False Set OL原创 2010-03-11 23:57:00 · 1651 阅读 · 0 评论 -
如何不保护工作表,而起到禁止插入对象(插入图片按钮灰色)的目的
不用保护工作表,不用加workbook_open事件,只需设置一下thisworkbook的属性就可以达到目的: thisworkbook.DisplayDrawingObjects =xlHide 有兴趣的可以看一下这个帖子http://topic.csdn.net/u/20091230/10/e8dbc009-f19e-497原创 2009-12-30 19:29:00 · 2821 阅读 · 0 评论 -
EXCEL里常用的几个正则表达式
"^/d+$" //非负整数(正整数 + 0)"^[0-9]*[1-9][0-9]*$" //正整数"^((-/d+)|(0+))$" //非正整数(负整数 + 0)"^-[0-9]*[1-9][0-9]*$" //负整数"^-?/d+$" //整数"^/d+(/./d+)?$" //非负浮点数(正浮点数 +原创 2010-03-13 23:43:00 · 12620 阅读 · 0 评论 -
在Excel里发Twitter
Sub sendTweets() Dim xml, sUsername$, sPassword$, sTweets$ Set xml = CreateObject("MSXML2.XMLHTTP") sUsername = "" your username sPassword = ""原创 2010-05-07 23:47:00 · 644 阅读 · 0 评论 -
用VBA来关闭其他程序
<br />以关闭Winrar.exe为例,代码如下:<br />Sub closeWinrar() Dim oWMT As Object, oProcess As Object Set oWMT = GetObject("winmgmts://") For Each oProcess In oWMT.InstancesOf("Win32_Process") If LCase(oProcess.Name) = "winrar.exe" Then原创 2010-07-13 20:22:00 · 2485 阅读 · 0 评论 -
用VBA导出Excel里的图表为JPG文件
<br /> Sub ExportChart() Dim myChart As Chart Dim myFileName As String Set myChart = Sheet1.ChartObjects(1).Chart myFileName = "myChart.jpg" On Error Resume Next Kill ThisWorkbook.Path & "/" & myFileName myChart.Export Fi原创 2010-07-17 13:07:00 · 3117 阅读 · 10 评论 -
VBA导入VFP的.dbf文件
<br /> Sub ImportVFPData() Dim i%, sql$ Dim cn, rst Set cn = CreateObject("adodb.connection") Set rst = CreateObject("adodb.recordset") Dim sql As String cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='dbase 5.0原创 2010-07-26 23:20:00 · 1923 阅读 · 0 评论 -
用Shell来运行dos下的ping命令
<br />Sub test() Shell "cmd.exe", vbNormalFocus SendKeys " ping mrvsto.com" & "{ENTER}", 1End Sub原创 2010-06-03 22:06:00 · 1768 阅读 · 0 评论 -
VBA用shell命令来压缩文件
<br />Sub zipFile() Dim winrarPath$, fullname$, filename$, filePath winrarPath = "c:/program files/winrar/winrar.exe a -afzip " filePath = Application.GetOpenFilename If filePath <> False Then fullname = StrReverse(Split(StrRev原创 2010-06-06 23:06:00 · 1912 阅读 · 0 评论 -
VBA用字典来替代函数的Vlookup
<br />Excel里有Vlookup函数,查找匹配数据非常方便,在VBA里,也可以用worksheetfunction.vlookup方法来调用,今天我介绍一个另一种使用字典(dictionary)+数组的方法,速度也非常快。<br /> <br />数据源图片:<br /><br /> <br />代码:<br />Sub test() Dim data, temp, arr Dim d Dim i&, k& Set d = CreateObject("scri原创 2010-08-07 11:05:00 · 14419 阅读 · 6 评论 -
介绍一个文本连接的自定义函数:contxt
<br />Excel自带的CONCATENATE函数虽然能连接文本,但却不能连接内存数组,论效果还没&这个连接符方便,实在是Excel里的第一大鸡肋。<br /><br />所以今天就介绍给大家我一直在用的文本连接的自定义函数–contxt 。<br /> <br />Function ConTxt(ParamArray args() As Variant) As VariantDim tmptext As Variant, i As Variant, cellv As VariantDim ce转载 2010-11-10 10:35:00 · 3815 阅读 · 0 评论 -
提取Excel、Word、PPT文件中的Flash文件的两种方法
<br /> 方法一:VBA代码法<br />新建一个文件,然后拷贝以下代码到VBA模块中,运行代码,选择含有Flash的Excel文件确定,即可获取swf文件。<br /> <br /> <br />Sub ExtractFlash() Dim tmpFileName As String Dim FileNumber As Integer Dim myFileId As Long Dim MyFileLen As Long Dim myIndex As L原创 2011-02-10 20:04:00 · 2560 阅读 · 0 评论 -
用VBA创建EXCEL表的桌面快捷
Sub CreatShortCut() Dim WSHShell Set WSHShell = CreateObject("WScript.Shell") Dim MyShortcut, DesktopPath DesktopPath = WSHShell.SpecialFolders("Desktop") Set MyShortcut = WSH原创 2010-02-26 20:47:00 · 954 阅读 · 0 评论 -
不打开另一个工作簿取它里面的工作表名
Sub test() Dim cn As Object, cat As Object, tbl As Object, str$ Set cn = CreateObject("ADODB.Connection") Set cat = CreateObject("ADOX.Catalog") Set tbl = CreateObject("ADOX.Table"原创 2010-02-27 23:34:00 · 3628 阅读 · 0 评论 -
关于EXCEL2007中ADO的数据库引擎
很多人换了2007后,问的最多的问题之一是2003里最经典的ADO中的“provider=Microsoft.Jet.OLEDB.4.0”这句怎么不能用了。百度一下可以了解到,Microsoft.Jet.OLEDB.4.0是Microsoft Jet引擎,这适用于2003版本(2003之前的我没装,所以也不知道能向下适应到哪个版本),而在2007中,微软对其旗下 Access 与 Excel原创 2009-11-29 23:50:00 · 9149 阅读 · 2 评论 -
如何将数据文本反转
如何将单元格中的数据反转,如“CSDN”变成“NDSC”? 由于工作表函数没有直接的能连接内存数组的函数,所以通常的解法是用辅助单元格或自定义函数。 我们这里主要说自定义函数,一般人的做法是用MID函数循环逐个取出并连接,最后取得一个反转的数据,但其实EXCEL的VBA里已经存在着一个反转数据的函数:StrReverse,所以自定义一个函数只需要1行代码: Function reve原创 2009-11-30 23:21:00 · 1617 阅读 · 0 评论 -
ADO的SQL语句中的“*”和“?”
由于VBA中代表单个和多个字符是用“?”和“*”代表的,所以许多刚学ADO的朋友经常会问:为什么在SQL语句中这两个符号不能用呢?应该用什么符号来代表呢? 这是因为VBA+ADO所用的驱动的关系,本人对这个也不是太精,具体大家可以去微软的网站上找找答案,所以VBA+ADO的SQL语句中的“*”和“?”这两个符号是用“%”和“_”,即百分号和下划线,明白了吧,赶快去试试吧。 再说一个差不多的问题原创 2009-12-01 20:46:00 · 801 阅读 · 0 评论 -
倒置文本的自定义函数
A1=欢迎来到CSDN论坛 一、倒置全部文本字符 Function 倒置文本(str As String)倒置文本 = StrReverse(str)End Function B1=倒置文本(A1)=坛论NDSC到来迎欢 二、倒置汉字,英文字母和数字不倒置 Function 倒置(str As String)Application原创 2010-02-01 22:48:00 · 891 阅读 · 0 评论 -
用自定义函数判断指定文件夹下是否包含子文件夹
Function CheckFolder(sPath As String) As Boolean If Right(sPath, 1) <> "/" Then sPath = sPath & "/" Dim sDir As String sDir = Dir(sPath & "*.*", vbDirectory) While sDir <> ""原创 2010-02-03 21:54:00 · 772 阅读 · 0 评论 -
删除工作簿中所有定义的名称
Sub delNames()Dim vNameFor Each vName In ThisWorkbook.Names vName.delteNextEnd Sub 或者在立即窗口输入此句代码后回车for each vName in thisworkbook.Names:vname.delete:next原创 2010-02-03 21:04:00 · 1086 阅读 · 0 评论 -
创建指定程序的桌面快捷方式--以记事本为例
Sub CreatShortCut() Dim WSHShell Set WSHShell = CreateObject("WScript.Shell") Dim MyShortcut, MyDesktop, DesktopPath DesktopPath = WSHShell.SpecialFolders("Desktop") Set MySho转载 2010-02-03 21:48:00 · 2048 阅读 · 0 评论 -
如何取相同项的最后一次值
示例说明:A列是料号列,只需要取重复项的最后一行数据,例如B料号是取黄色行数据。该实例可用于公司BOM表中取最近日期数据 源数据 结果 VBA代码:Sub test()Dim cn As Object, sql$Set cn = CreateObject("ADODB.Connection")Sheet2.[a1:d65536].Cl原创 2010-02-05 23:46:00 · 1819 阅读 · 0 评论 -
设置EXCEL的默认打印机
系统设置了一个默认打印机,但在EXCEL有些人喜欢用其它的打印机做默认项,这个可以通过EXCEL的workbook的事件来实现Private Sub Workbook_BeforePrint(Cancel As Boolean) Application.ActivePrinter = "pdfFactory Pro 在 FPP3:" End Sub 注意: 1、括号里原创 2010-02-09 14:24:00 · 7157 阅读 · 1 评论 -
EXCEL export to TXT
Sub Export2TXT() Dim arr, i&, k%, str$ Open ThisWorkbook.Path & "/test.txt" For Output As #1 arr = [a1].CurrentRegion For i = 1 To UBound(arr) str = "" For k = 1原创 2010-02-10 23:11:00 · 1130 阅读 · 0 评论 -
列出指定文件夹中的子文件夹和文件
VBA列出文件夹中所有的子文件夹 Sub ShowFolderList() Dim fso As Object, oFolder As Object Dim oFolderArray As Object, f As Object Dim k& Set fso = CreateObject("scripting.filesystemobject")原创 2010-02-21 13:39:00 · 2707 阅读 · 0 评论 -
TreeView控件的通用代码
With TreeView1 .Style = tvwTreelinesPlusMinusPictureText .LineStyle = tvwRootLines .CheckBoxes = False With .Nodes .Clear .Add Key:="TEST", Text:="TEST"原创 2010-02-20 11:40:00 · 1304 阅读 · 0 评论 -
EXCEL表的自杀代码
With ThisWorkbook .Saved = True .ChangeFileAccess xlReadOnly Kill .FullName .Close FalseEnd With原创 2010-02-27 22:37:00 · 1966 阅读 · 0 评论 -
导出Outlook里的全球通讯录到Excel
<br /> <br />最近整理硬盘文件,发现一个Outlook里的全球通讯录到Excel的代码,但不知道这个文件是什么时候下的了,谨向原作者致敬。<br />注意:<br />1、这个代码是写在Excel的模块里的。<br />2、通讯录中联系人个数多的话,可能时间有点长<br /> <br />Const CdoAddressListGAL = 0Const CdoUser = 0Const CdoRemoteUser = 6#Const EarlyBind = TrueSub App原创 2011-02-16 11:29:00 · 4878 阅读 · 2 评论