常用VBA小技巧
删除导入csv等文本文件后留下的 Data connections
- 增加新的工作表并并命名
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "333"
- 检查工作表是否存在,若不存在则新建
'参数:
' SheetName: 工作表名字
'功能:
' 检查以SheetName为工作表名字的worksheet是否存在,若不存在,则新建.
Private Sub CheckCreateNewWorksheet(SheetName As String)
Dim ExistsFlag As Boolean ' ExistsFlag: true-SheetName的工作表存在; false-不存在
Dim St As Worksheet ExistsFlag = False
For Each St In Worksheets
If St.Name = SheetName Then
ExistsFlag = True
Exit For
End If
Next '如果以SheetName为工作表名字的worksheet不存在,则新建它
If ExistsFlag = False Then
Worksheets.Add(After:=Worksheets()).Name = SheetName
End If End Sub
- 路径中提取最后的文件名
'从路径C:\ab\c\d.txt 中提取文件名 d.txt
Public Function GetfileName(FilePath As String) As String
Dim strTemp() As String
strTemp = VBA.Split(FilePath, "\")
GetfileName = strTemp(UBound(strTemp))
End Function
- 用对话框选取文件路径 (单个文件)
'得到指定文件的全路径 ' 出口参数:SelectedDataPath 选择的文件的全路径 ' TitleDisplayed :展示的标题
' InitalPath: 起始的路径
Private Sub GetFilePathFromDialog(SelectedDataPath As String, TitleDisplayed As String, InitalPath As String) With Application.FileDialog(msoFileDialogFilePicker)
.Title = TitleDisplayed ' "Select The Portfolio Holding Report:"
.InitialFileName = InitalPath ' "\\192.168.0.200\files\administrative\Operation\Daily PMS\" '打开对话框后的默认展示路径,增加易用性
.AllowMultiSelect = False '不允许多选
.Filters.Clear '清除过滤器
'.Filters.Add "Excel Files", "*.xls;*.xlw;*.xlsx;*.xlsm" '设置两个过滤器
.Filters.Add "All Files", "*.*"
If .Show = - Then 'Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel)
SelectedDataPath = .SelectedItems()
Else '说明用户按了"取消"按钮,则提示程序将退出.
Err.Raise Number:= + , Description:="You click cancel buttion. Program will terminate."
End If
End With End Sub
- 用对话框选取文件路径(可以一次性选取多个文件: 主要利用 .AllowMultiSelect = True )
' 将待做CICC的 Pos rec的数据通过点选文件的方式拷贝到对应的表格
Public Sub GetCiccPosRecData(WktPMS As Worksheet, WktBPFL As Worksheet, WktCCF As Worksheet, WktUBS As Worksheet)
Application.ScreenUpdating = False Dim FileItems As FileDialogSelectedItems
Dim VrtItem As Variant '通过多选的方式,选定所有文件
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True ' 允许多选
.Title = "please select the files regarding to CICC position rec."
.InitialFileName = WktPMS.Parent.Path ' 打开对话框后的默认展示路径,增加易用性
.Filters.Clear ' 清除过滤器
.Filters.Add "Excel Files", "*.xls;*.xlw;*.xlsx;*.xlsm;*.csv;*.XLS" '设置两个过滤器
'.Filters.Add "All Files", "*.*"
If .Show = - Then 'Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel)
'SelectedDataPath = .SelectedItems(1)
Set FileItems = .SelectedItems
Else '说明用户按了"取消"按钮,则提示程序将退出.
Err.Raise Number:= + , Description:="You click cancel buttion. Program will terminate."
End If
End With For Each VrtItem In FileItems
If InStr(CStr(VrtItem), "BrillianceAQM") > Then 'UBS
Call GetCiccDataForOnefund(WktUBS, CStr(VrtItem))
ElseIf InStr(CStr(VrtItem), "BRILLIANCE_") > Then 'BPFL
Call GetCiccDataForOnefund(WktBPFL, CStr(VrtItem))
ElseIf InStr(CStr(VrtItem), "ChinaCoreFund_") > Then 'CCF
Call GetCiccDataForOnefund(WktCCF, CStr(VrtItem))
ElseIf InStr(CStr(VrtItem), "rep_position_by_custodian_CICC") > Then ' PMS custodian: CICC
Call GetCiccPMSData(WktPMS, CStr(VrtItem))
Else
Err.Raise Number:= + , Description:="An new file name. Please check manually."
End If
Next Application.ScreenUpdating = True Debug.Print "--------------------" End Sub
- Transpose 将横向的一维数组转置到 excel的列中
WktOutput.Range("A2").Resize(DicAll.Count, ) = Application.WorksheetFunction.Transpose(DicAll.Keys) 将 DicAll.Keys 这个数组 转置到 A 列 拷贝工作表,从workbook1拷贝到 workbook2
WbOMS.Worksheets("Sheet").Cells.Copy
WktOmsOri.Range("A1").PasteSpecial xlPasteAll WbSMY.Worksheets(StrDate).Cells.Copy
WktSmyOri.Range("A1").PasteSpecial xlPasteAll- 避免剪贴后出现对话框
'在粘贴后,加一句CutCopyMode = False的代码 ,以清空剪贴板.
Wkt.Cells.Copy WktDest.Range("A1")
Application.CutCopyMode = False
'关闭 Source File
Wkb.Save
Wkb.Close
'如下代码需成对出现
Application.DisplayAlerts = False
Application.ScreenUpdating = False
- 用数组给单元格批量赋值
Dim AryTitle as Variant
AryTitle = Array("Ticker", "Last Price", "Current Price", "Diff", "Only In Last", "Only In Current")
Wkt.Range("A1:F1").Value = AryTitle '注意 Range的大小要和数组的长度相同.
Wkt.Range("A1:F1").Font.Bold = True
- 关闭某个window窗口
Windows("TEST_FOR_0227_Merill_Lynch_DB_GS.xlsm").WindowState = xlMinimized
其中Windows()的参数为窗口名称。
- 删除导入csv等文本文件后留下的 Data connections
' Function:
' delete all the data connnections to avoid leaving many unuseful data connections behind
Public Sub DeleteDataConnections() Application.DisplayAlerts = False Dim Wb As Workbook
Dim AryConName() As String ' 存储data connections名字的数组
Dim ConNum As Integer
Dim Idx As Integer Set Wb = ThisWorkbook
ConNum = Wb.Connections.Count
Debug.Print "[In DeleteDataConnections ] Wb.Connections.Count = " & Wb.Connections.Count If ConNum > Then ' 如果 存在data connections链接,则先存储其names, 再利用names将其循环删除.
ReDim AryConName( To ConNum) As String For Idx = To ConNum
AryConName(Idx) = Wb.Connections.Item(Idx).Name
Debug.Print "[In DeleteDataConnections ] ------------>idx = " & Idx & " AryConName(Idx) = " & AryConName(Idx)
Next For Idx = To ConNum ' 利用name来循环删除,而非利用 wb.Connections.Item(idx)
Wb.Connections(AryConName(Idx)).Delete
Next
End If End Sub
常用VBA小技巧的更多相关文章
- ES6中常用的小技巧,用了事半功倍哦
ES6中常用的小技巧,如果能在实际项目中能使用到,必定事半功倍: 1. 强制要求参数 ES6提供了默认参数值机制,允许你为参数设置默认值,防止在函数被调用时没有传入这些参数. 在下面的例子中,我们写了 ...
- Python+Selenium进行UI自动化测试项目中,常用的小技巧1:读取excel表,转化成字典(dict)输出
从今天开始我将会把在项目中遇到的问题,以及常用的一些技巧来分享出来,以此来促进自己的学习和提升自己:更加方便我以后的查阅. 现在要说的是:用Python来读取excel表的数据,返回字典(dict), ...
- 常用 JavaScript 小技巧及原理详解
善于利用JS中的小知识的利用,可以很简洁的编写代码 1. 使用!!模拟Boolean()函数 原理:逻辑非操作一个数据对象时,会先将数据对象转换为布尔值,然后取反,两个!!重复取反,就实现了转换为布尔 ...
- VBA小技巧
运用VBA时,可以构造一些函数去实现诸如printf的方便函数. Public Function printf(mask As String, ParamArray tokens()) As Stri ...
- 我做的python常用的小技巧
在python编码过程中,总会遇到各种各样的小问题,我想着记录下来,以备查用,总结过去,是为了更好的思考与进步. 一. 去除变量中(标题中)多余的字符 数据处理过程中,遇到这样的情况: y=['月份' ...
- JS开发中常用的小技巧
1.获取指定范围内的随机数 1 2 3 function getRadomNum(min,max){ return Math.floor(Math.random() * (max - min ...
- Extjs 项目中常用的小技巧,也许你用得着(2)
接着来,也是刚刚遇到的 panel怎么进行收缩 collapsible: true, 这会panel就会出现这个 点这个就可以收缩了 panel怎么随便拉伸,也就是让那个小黑三角出现 split: t ...
- Extjs 项目中常用的小技巧,也许你用得着(1)
我在项目中遇到的一些知识点: 1.在GridPanel中显示图片,效果 对应的代码实现 { text: '是否启用', width: 80, // xtype: 'checkcolumn', data ...
- 前端ps常用的小技巧
一些很简单的例子,知道的就当看乐子. 1.T 是文字的 可以从矢量图中查看文字的大小 字体 颜色,具体就是T 选择一段文字,点确定,点击属性栏最后一个可以看详细信息.又字体,行高,颜色.如果要选取 ...
随机推荐
- Could not automatically select an Xcode project. Specify one in your Podfile like so
需要将Podfile文件放置在根目录下,而不能放置在项目的里面. 更改路径即可
- 【Python】- pytharm 中import时无法识别自己写的程序
右键点击自己的工作空间,找下面的Mark Directory as(将目录标记为) 选择Source Root,就可以解决上面的问题了,如图
- Java String学习笔记
参照:https://www.jianshu.com/p/2f209af80f84 常量池: Java代码被编译成class文件时,会生成一个常量池(Constant pool)的数据结构,用以保存字 ...
- 【bzoj3561】DZY Loves Math VI 莫比乌斯反演
题目描述 给定正整数n,m.求 输入 一行两个整数n,m. 输出 一个整数,为答案模1000000007后的值. 样例输入 5 4 样例输出 424 题解 莫比乌斯反演 (为了方便,以下公式默认$ ...
- [bzoj] 3343 教主的魔法 || 带修改分块
原题 长度为n的序列,有两种操作: 1.[l,r]区间每个数+w 2.询问[l,r]区间有多少个数>c 记录lazy数组即可. #include<cstdio> #include&l ...
- Tomcat学习笔记(十二)
Host和Engine容器 Context容器的父容器通常是Host容器. Engine容器表示Catalina的整个servlet引擎.如果使用Engine容器,那么它总是处于容器层级的最顶层.默认 ...
- vue jsonp解决跨域处理
1.安装vue jsonp npm i -S vue-jsonp 2.在main.js中导入vue-jsonp import VueJsonp from 'vue-jsonp' 通过use方法,挂载到 ...
- 【CString与string转换】不存在从 "LPWSTR" 转换到 "std::basic_string<char, std::char_traits<char>, std::allocator(转)
原文转自 http://blog.csdn.net/qq_23536063/article/details/52291332 [问题描述] CString cstr: sring str(cstr.G ...
- python接口自动化6-重定向(Location)【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/python%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E ...
- Android (Notification)消息推送机制
从网上查询资料学习Android消息推送机制,效果图如下: 1.首先是布局文件代码 activity_main.xml <?xml version="1.0" encodin ...