常用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
- WbOMS.Worksheets("Sheet").Cells.Copy
- 避免剪贴后出现对话框
- '在粘贴后,加一句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 选择一段文字,点确定,点击属性栏最后一个可以看详细信息.又字体,行高,颜色.如果要选取 ...
随机推荐
- struct&&class 空的大小
#include using namespace std; class ClassA { }; class ClassB { private: int b; }; class ClassC : pub ...
- 【bzoj3779】重组病毒 LCT+树上倍增+DFS序+树状数组区间修改区间查询
题目描述 给出一棵n个节点的树,每一个节点开始有一个互不相同的颜色,初始根节点为1. 定义一次感染为:将指定的一个节点到根的链上的所有节点染成一种新的颜色,代价为这条链上不同颜色的数目. 现有m次操作 ...
- ORACLE 向BLOB字段中出入图片等二进制文件,使用Oracle SQl Developer工具
使用PL/SQL也可以 create directory "image" as 'e:\'; --"image" 要带双引号,网上很多不带的,我测试时出错,并且 ...
- Python列表及元组操作
#列表(一组有序数据的组合就是列表) #创建列表 #空列表 var = list()#var = [] print(var,type(var)) #具有多个元素的列表 var = ['风','水',' ...
- BZOJ2763 [JLOI2011]飞行路线 【分层图 + 最短路】
题目 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格 ...
- 在有道词典程序文件夹发现一个后缀名为sql的数据库(SQLite)
缘起 在清理电脑磁盘的时候,看一看各安装文件夹有占用了多大容量,发现有道词典居然达140MB了,于是进去看看. 发现个有趣的文件:XXX.sql. 首先我们看一看它的安装文件夹的结构: Dict └─ ...
- Codeforces Round #325 (Div. 2) A
A. Alena's Schedule time limit per test 1 second memory limit per test 256 megabytes input standard ...
- DP———1.最大子连续子序列和
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- bzoj2693 莫比乌斯反演
Description Hint T <= 10000N, M<=10000000 https://wenku.baidu.com/view/fbec9c63ba1aa8114431d ...
- FastDfs java客户端上传、删除文件
#配置文件 connect_timeout = 2 network_timeout = 30 charset = UTF-8 http.tracker_http_port = 9090 http.an ...