API
taller_2000
不积跬步,无以至千里;不积小流,无以成江海
展开
-
使用VBA打印PDF文件
使用VBA打印工作表和工作簿文件都很容易实现,但是有时需要使用VBA打印已经保存在本机的其他文件,例如PDF文件格式的账单,如果这个PDF并非由Excel生成的那么就无法使用前述方法实现。调用Windows的Shell命令可以实现打印PDF文件。原创 2023-11-04 01:32:19 · 3439 阅读 · 2 评论 -
VBA检查指定应用程序是否已经打开
VBA中提供了`CreateObject`和`GetObject`两种方法获得对象实例,二者的区别在于`GetObject`用于获取已经打开的应用程序对象,但是如果该应用程序并没有打开,那么将产生运行时错误,代码中需要加入额外的错误处理代码。在任务管理器中可以轻松的查看当前已经打开的应用程序,如下图所示。原创 2023-02-01 07:25:21 · 2303 阅读 · 0 评论 -
如何为文件夹选择对话框指定缺省目录
想必大家都已经知道VBA中`Application.FileDialog(msoFileDialogFolderPicker).Show`可以实现目录选择对话框,本文解释另一种实现方式 -- Shell对话框。原创 2022-02-02 13:57:36 · 966 阅读 · 0 评论 -
VBA玩转系统剪贴板
前几天分享了博文《如何使用VBA将变量值拷贝到剪贴板?》,有的网友觉得使用的是旁门左道,今天来个根正苗红的Windows API解决方案。示例代码如下。Private Declare Function GlobalAlloc Lib _ "kernel32.dll" (ByVal wFlags As Long, _ ByVal dwBytes As Long) As LongPrivate Declare Func原创 2021-04-28 10:41:39 · 6300 阅读 · 5 评论 -
如何获取数组的维数(API)
在VBA中并没有提供可以直接获取数组维数的函数和方法,前面的文章“如何获取数组的维数”介绍了,如何使用捕获错误的方法来获取数组的维数,本文介绍如何使用Windows API获取数组的维数。原创 2020-02-29 12:57:12 · 956 阅读 · 0 评论 -
如何判断数组已经初始化
VBA编程中经常用到数组,在代码中使用数组之前,需要确保数组已经完成初始化操作,借助API可以进行判断。Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As LongSub Demo()Dim strArray1() As StringDim strArray2() A...原创 2018-12-07 03:04:42 · 2282 阅读 · 0 评论 -
用户窗体定身术--禁止移动
在VBA中通过用户窗体的StartUpPosition属性可以指定窗体显示的位置,如下图所示。 但是用户可以随意拖动窗体调整位置,是否可以像孙悟空一样,给窗体施个定身术,固定位置无法移动呢? 用户窗体的移动可以通过系统菜单操作,如下图所示,鼠标拖动用户窗体实际上也是调用了系统菜单功能。 但是VBA中的用户窗体对象并没有提供属性或者方法来控制其他系统菜单,只能使用API函数Pr...原创 2018-09-10 11:23:05 · 3103 阅读 · 0 评论 -
VBA获取按键锁定状态
标准键盘上有三个可以锁定按键:Caps Lock,Num Lock,Scroll Lock,即使是电脑小白也知道这三个键的用法,这里不再赘述。可是在VBA中如何查询这三个按键的当前状态呢?其实并不复杂,调用一个API就可以实现。Private Type udtKeyboardBytes bytKB(0 To 255) As ByteEnd TypeDeclare Functio...原创 2018-08-23 23:17:08 · 2927 阅读 · 0 评论 -
VBA调用系统调色板
在Excel中设置单元格字体格式时,可以为用户提供选择颜色的调色板,如下图所示。 在VBA代码中如何提供调色板让用户选择颜色呢? 一种方法是调用Excel的系统对话框实现设置颜色,对话框如下图所示。Application.Dialogs(xlDialogFont).Show 但是,并不是所有的格式设置都有与之对应的系统对话框可以对应,所以调用系统调色板供用户选择颜色,然后使用代码...原创 2018-08-26 13:40:39 · 3769 阅读 · 2 评论 -
VBA中数组72变(随心所欲复制)
西游记中孙悟空最神奇的本领之一就是拔根毫毛,瞬间变出无数个孙猴子。代码中的数据可谓神通广大,如何实现瞬间变身呢?其实也很简单。Private Declare Sub CopyMemory Lib "kernel32" _ Alias "RtlMoveMemory" ( _ Destination As Any, _ Source As Any, _ ByVal ...原创 2018-08-11 14:01:21 · 4321 阅读 · 0 评论 -
Excel图标也可以变脸
从Excel的前世VISICALC算起的话,Excel已经有40岁了,已经到了不惑之年。Excel也经过N多个版本发发展,其图标也有一些变化。 做为一个Excel重度用户,每天对着这个Excel这个绿乎乎的图标,是否有些烦! 那么今天就给Excel来个变脸吧!其实也很简单,借助3个API函数,几句VBA代码将够了,天气这么热,就把图标换成西瓜吧,呵呵Private Declar...原创 2018-06-10 14:33:54 · 1073 阅读 · 0 评论 -
VBA中的彩色消息框
VBA中显示消息框实在太简单了,一句MsgBox就可以了。 千篇一律的风格,不能漂亮一点儿吗?我们来给它点儿颜色看看,哈哈Private Declare Function SetSysColors Lib "user32" ( _ ByVal nChanges As Long, _ lpS...原创 2018-06-13 13:00:37 · 4496 阅读 · 1 评论 -
API实现快速转换简体字与繁体字
繁体字和简体字之间进行转换,是编程中经常遇到的,虽然有很多在线工具可以实现转换,但是代码中如何能快速实现呢?其实利用API可以快速实现繁体字与简体字直接的转换,函数代码如下。Private Declare Function LCMapString Lib "kernel32" Alias "LCMapStringA" (ByVal Locale As Long, _ByVal dwMap...原创 2018-04-15 09:29:50 · 5368 阅读 · 0 评论