自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Paladin.Lao的VSTO/VBA专栏

欢迎光临我的个人网站 laoyebin.com

转载 聊聊最近的CPA心得吧

不知不觉都快要3个月没更新博客了,一是懒,二是没啥时间,三是主要原因——没啥好写的东西。相信很多博客主都和我一样,写着写着就没啥激情了,从一开始的每天更新,到每3天更新,然后每周更新,再然后个把月才更新一次,后来是随性而至,哪天突然想起就写上一篇。其实,更多时候不是不想写,而是写不出,随便写写吧,那种垃圾文章简直就是侮辱读者的眼球,不写吧,Google、百度权重越来越低,实在也是挺难的说。

2013-06-14 19:23:06 1260

转载 成功申请到ClickDealer联盟

今年开年,决定专注于国外CPA,经过半个多月的泡论坛+找资料+Google,大概也学了个差不多,所以从这个礼拜开始,陆续向几个评价不错的联盟递了申请。第一个是PeerFly联盟,在affpaying的评价是非常不错的,而且听说offer多、单价不错、AM人也蛮好,首先就申请了它。也怪我不好,LP没建的漂亮点,而且注册时候的介绍也写的简单了点,第二天就悲剧了。第二个是CubeCPA联

2013-03-07 23:37:29 4411

原创 导出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 4116 2

原创 提取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 1980

转载 介绍一个文本连接的自定义函数: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 3248

原创 VSTO/Excel:快速找出某一列中与指定单元格不同的数据

<br />private void button1_Click(object sender, EventArgs e){ Excel.Range rng = null; rng = ((Excel.Range)this.Columns[1]).ColumnDifferences(Range["a2"]); rng.Select();} <br /> <br />这个方法其实就是调用了F5定位里的columndifferences,但两者有一点不同的地方:定位里的C

2010-08-29 21:47:00 1592

原创 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 11550 6

原创 Word里全角转换成半角

<br /> 上次写一篇文章,不小心开了全角,结果文章编辑完,惨不忍睹,然后就想自编个宏一次性转换。起先想到的当然是像Excel一样使用ASC函数,但发现VBA的ASC不是全半角转换的功能,晕死,只能网上找答案,终于,找到一个狼版以前发的回帖,完美解决。<br />代码如下:Sub SBC2DBC() ActiveDocument.Content.CharacterWidth = wdWidthHalfWidthEnd Sub 作者:laoyebin(Paladin.lao)博客园出处:h

2010-07-26 23:21:00 1006

原创 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 1594

原创 用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 2412 10

原创 用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 1779

原创 画四条直线然后组合成矩形

<br />private void button1_Click(object sender, EventArgs e){ Excel.Shape lineA = Globals.Sheet1.Shapes.AddLine(25, 140, 495, 140); Excel.Shape lineB = Globals.Sheet1.Shapes.AddLine(495, 140, 495, 305); Excel.Shape lineC = Globals.Sheet1.S

2010-06-08 22:09:00 853

原创 C#与TXT文件的读写操作

static void Main(string[] args){ string path = @"d:/1.txt"; File.WriteAllText(path, "test1", Encoding.Default); //覆盖写入,无文件则创建 File.AppendAllText(path, "/n" + "test2", Encoding.Default); //追加写入 Console.WriteL

2010-06-07 10:42:00 737

原创 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 1553

原创 用Shell来运行dos下的ping命令

<br />Sub test() Shell "cmd.exe", vbNormalFocus SendKeys " ping mrvsto.com" & "{ENTER}", 1End Sub 

2010-06-03 22:06:00 1608

原创 获取日历控件的选取值

VBA里直接用“Calendar.Value”就可以获取日历控件的值了,但VSTO里竟然没有这个属性。找了半天,原来要这样搞才行:

2010-05-31 23:59:00 3445

原创 在Excel里发Twitter

Sub sendTweets() Dim xml, sUsername$, sPassword$, sTweets$ Set xml = CreateObject("MSXML2.XMLHTTP") sUsername = "" your username sPassword = ""

2010-05-07 23:47:00 533

原创 获取Excel中的自定义序列

 private void button1_Click(object sender, EventArgs e){ for (int i = 1; i <= Application.CustomListCount; i++) { object obj = Application.GetCustomListContents(i); Arr

2010-05-06 21:10:00 730

原创 VSTO运行VBA代码

 昨天一个同事问我,怎么在VSTO的控件上运行工作簿中的VBA代码。这个很简单,VSTO提供了一个Run方法,可以直接运行Marco,就和你在VBA的一个过程里调用另一个过程一样。VSTO里的代码:private void button1_Click(object sender, EventArgs e){ Application.Run("test");} 

2010-04-28 23:12:00 2457

原创 VSTO里转置C#数组

 大家都知道,C#里没有直接的方法能转置一个数组,所以一般都用循环来完成。为此我上次专门在CSDN上发了个贴,询问VSTO里用C#有没有办法可以不用循环来转置数组,但没得到结果,为此我还抱怨了微软好久,C#的功能竟然还不及VBA。今天,突然闪过一个念头,VBA里可以调用EXCEL的工作表函数,那VSTO里是否也可以呢?试了一下,原来真可以,郁闷了,以前转了那么多弯路。测试代码如下:pr

2010-04-23 20:47:00 1269

原创 Excel:一个连接文本的简单的方法

以前,连接文本用的是"CONCATENATE"函数或者“&”,不过在有许多单元格时候一个个点很麻烦,所以一般都我是自编一个VBA循环来连接。前些天,看到论坛上某人发现了一个函数的新用法,“PHONETIC”函数可以快速的连接,只需=PHONETIC(A1:C10)就可连接这个区域的所有文本数据,极大的省略了繁琐的步骤。不过可惜的是,这个函数不支持数值型和内存数组的连接,真是令人郁闷,或

2010-04-16 23:44:00 4456

原创 为什么有些Office对象的事件无法使用

今天碰到了个问题,发现无法使用某些对象事件,+=后双TAB出不来。四处找原因,GOOGLE、MSDN上翻了许久,终于找到了原因和解决方法。原因:写了一个同名的方法,而VSTO处理规则应该是方法>事件,所以有了同名的方法后事件就无法使用了。如已经写了下面的方法:void ThisWorkbook_ActivateEvent(){ MessageBox.Show("b");}

2010-04-14 23:52:00 978

原创 一个有趣的C#正则替换问题

9.1(2) ------ 9.119(3).5(1) ----- 999.589(2).7 ------ 899.7即把括号替换成括号前一数字的N次原帖见http://topic.csdn.net/u/20100317/19/e25694b8-ff80-427a-910b-04a666ce6cbc.html static void Main(string[] args){

2010-03-17 23:28:00 638

原创 VSTO在EXCEL添加VBA模块代码

private void ThisWorkbook_Startup(object sender, System.EventArgs e){ string sCode = "Sub VBAMacro()/r/n" + "MsgBox /"Test/"/r/n" + "End Sub"; VBComponent oModule; oModule = Globals.T

2010-03-16 13:58:00 1567

原创 VSTO中捕捉窗口缩放的事件

    private void ThisWorkbook_Startup(object sender, System.EventArgs e) { this.WindowResize += new Microsoft.Office.Interop.Excel.WorkbookEvents_WindowResizeEventHandler(ThisWor

2010-03-15 16:25:00 1281

原创 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 8163

原创 在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 1451

原创 VSTO C#数组填充EXCEL单元格

VS2005版的C#没有提供和VB.NET一样的RESIZE方法,所以经常看到很多用C#的同学在数组填充单元格的时候是通过定义一个Excel.Range再赋值Value2的方法来做的,其实VS2008中提供了一个get_Resize方法,无需那么麻烦了。 private void button1_Click(object sender, EventArgs e){ int[,]

2010-03-10 23:56:00 2425

原创 删除整篇Word文档中的图文框

EH上看到有人问这个问题,其实只需要一句代码就行立即框输入以下代码后回车For Each x In ActiveDocument.Frames: x.Delete: Next   作者:laoyebin(Paladin.lao)博客园出处:http://laoyebin.cnblogs.com/个人网站英文出处:http://mrvsto.com/个人网站中

2010-03-09 12:22:00 6371 1

原创 禁止在EXCEL中CTRL+C的复制快捷键

Private Sub Workbook_Open() Application.OnKey "^{c}", ""End SubPrivate Sub Workbook_Deactivate() Application.OnKey "^{c}"End Sub  作者:laoyebin(Paladin.lao)博客园出处:http://laoyebi

2010-03-06 23:40:00 2883

原创 123456789四则运算

代码说明:在123456789或987654321中插入+-*/四则符号来算出一个固定的值。asc为true时是123456789,反之为987654321。123456789算100,C#下时间为15秒,VBA下为56秒,快了3/4。版权说明:本文来自狼版http://blog.csdn.net/northwolves/archive/2009/11/20/4841068.aspx一文,

2010-03-05 13:48:00 1157

原创 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 1302

原创 取单元格红色字体的VBA自定义函数

Function GetColorChar(Rng As Range) Application.Volatile True Dim i%, str$ For i = 1 To Len(Rng) If Rng.Characters(i, 1).Font.Color = 255 Then str = str & Mid(Rng.

2010-03-02 22:23:00 1736

原创 不打开另一个工作簿取它里面的工作表名

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 3238

原创 EXCEL表的自杀代码

With ThisWorkbook .Saved = True .ChangeFileAccess xlReadOnly Kill .FullName .Close FalseEnd With

2010-02-27 22:37:00 1646

原创 用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 711

原创 VSTO 隐藏EXCEL2007的菜单栏

  private void button1_Click(object sender, EventArgs e){ Application.ExecuteExcel4Macro("show.toolbar(/"ribbon/",false)");}private void button2_Click(object sender, EventArgs e){

2010-02-23 16:44:00 2231

原创 取当前用户登录域和登录名

private void button1_Click(object sender, EventArgs e) { MessageBox.Show(System.Security.Principal.WindowsIdentity.GetCurrent().Name); }  C#里只需要这么一句话,而VBA环境里试了好几个方法,都只能取到本地机

2010-02-22 21:54:00 1685

原创 列出指定文件夹中的子文件夹和文件

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 2570

原创 获取所选取表名和区域的名称

private void ThisWorkbook_Startup(object sender, System.EventArgs e) { this.SheetSelectionChange += new Microsoft.Office.Interop.Excel.WorkbookEvents_SheetSelectionChange

2010-02-20 13:58:00 1096

提示
确定要删除当前文章?
取消 删除