用对话框选取文件路径(单个文件)

删除导入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小技巧的更多相关文章

  1. ES6中常用的小技巧,用了事半功倍哦

    ES6中常用的小技巧,如果能在实际项目中能使用到,必定事半功倍: 1. 强制要求参数 ES6提供了默认参数值机制,允许你为参数设置默认值,防止在函数被调用时没有传入这些参数. 在下面的例子中,我们写了 ...

  2. Python+Selenium进行UI自动化测试项目中,常用的小技巧1:读取excel表,转化成字典(dict)输出

    从今天开始我将会把在项目中遇到的问题,以及常用的一些技巧来分享出来,以此来促进自己的学习和提升自己:更加方便我以后的查阅. 现在要说的是:用Python来读取excel表的数据,返回字典(dict), ...

  3. 常用 JavaScript 小技巧及原理详解

    善于利用JS中的小知识的利用,可以很简洁的编写代码 1. 使用!!模拟Boolean()函数 原理:逻辑非操作一个数据对象时,会先将数据对象转换为布尔值,然后取反,两个!!重复取反,就实现了转换为布尔 ...

  4. VBA小技巧

    运用VBA时,可以构造一些函数去实现诸如printf的方便函数. Public Function printf(mask As String, ParamArray tokens()) As Stri ...

  5. 我做的python常用的小技巧

    在python编码过程中,总会遇到各种各样的小问题,我想着记录下来,以备查用,总结过去,是为了更好的思考与进步. 一. 去除变量中(标题中)多余的字符 数据处理过程中,遇到这样的情况: y=['月份' ...

  6. JS开发中常用的小技巧

    1.获取指定范围内的随机数 1 2 3 function getRadomNum(min,max){     return  Math.floor(Math.random() * (max - min ...

  7. Extjs 项目中常用的小技巧,也许你用得着(2)

    接着来,也是刚刚遇到的 panel怎么进行收缩 collapsible: true, 这会panel就会出现这个 点这个就可以收缩了 panel怎么随便拉伸,也就是让那个小黑三角出现 split: t ...

  8. Extjs 项目中常用的小技巧,也许你用得着(1)

    我在项目中遇到的一些知识点: 1.在GridPanel中显示图片,效果 对应的代码实现 { text: '是否启用', width: 80, // xtype: 'checkcolumn', data ...

  9. 前端ps常用的小技巧

    一些很简单的例子,知道的就当看乐子. 1.T 是文字的  可以从矢量图中查看文字的大小 字体 颜色,具体就是T  选择一段文字,点确定,点击属性栏最后一个可以看详细信息.又字体,行高,颜色.如果要选取 ...

随机推荐

  1. C#程序怎么写,效率高

    文章:改善C#程序,提高程序运行效率的50种方法 文章:编写高效率的C#代码

  2. ocrosoft Contest1316 - 信奥编程之路~~~~~第三关 问题 C: 挂盐水

    http://acm.ocrosoft.com/problem.php?cid=1316&pid=2 题目描述 挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后滴二滴,停一下:再滴三滴 ...

  3. 【bzoj3144】[Hnoi2013]切糕 网络流最小割

    题目描述 输入 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x,y,z) (1≤x≤ ...

  4. hdu 1551 Cable master (二分法)

    Cable master Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  5. 关于ECDSA/ECC(密钥加密传输)和ECDSA/ECDH(密钥磋商)

    关于ECDSA/ECC(密钥加密传输)和ECDSA/ECDH(密钥磋商) 来源: https://blog.csdn.net/xueyepiaoling/article/details/6243337 ...

  6. git上导出的maven项目转成正常的Dynamic web project

    项目地址:http://git.oschina.net/jiafuwei0407/springmvc,springmvc maven项目 包含日志的测试 restful api 如何在eclipse ...

  7. python urllib2 常见请求方式

    GET 添加headers头import urllib2 request = urllib2.Request(uri) request.add_header('User-Agent', 'fake-c ...

  8. 基于UDP高性能传输协议UDT doc翻译(一)

    原文转自:http://hi.baidu.com/doodlezone/item/74a203155efe26dbbf9042dd                  UDT文档阅读理解 一.  概述 ...

  9. Spring Mvc 传递参数要controller出现了400,日期参数全局处理,格式化yyyy-MM-dd 和yyyy-MM-dd HH:mm:ss

    描述:今天做一个业务操作的时候,ajax传递参数要controller出现了400,前后台都没有报错. 问题:springmvc 在接收日期类型参数时,如不做特殊处理 会出现400语法格式错误 解决: ...

  10. CentOS7.0使用Yum安装Nginx

    安装Nginx yum install nginx 正常情况下必定是: 已加载插件:fastestmirror, langpacks base | 3.6 kB 00:00:00 docker-mai ...