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

删除导入csv等文本文件后留下的 Data connections

  • 增加新的工作表并并命名
  1. Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "333"
  • 检查工作表是否存在,若不存在则新建
  1. '参数:
  2. ' SheetName: 工作表名字
  3. '功能:
  4. ' 检查以SheetName为工作表名字的worksheet是否存在,若不存在,则新建.
  5. Private Sub CheckCreateNewWorksheet(SheetName As String)
  6. Dim ExistsFlag As Boolean ' ExistsFlag: true-SheetName的工作表存在; false-不存在
  7. Dim St As Worksheet
  8.  
  9. ExistsFlag = False
  10. For Each St In Worksheets
  11. If St.Name = SheetName Then
  12. ExistsFlag = True
  13. Exit For
  14. End If
  15. Next
  16.  
  17. '如果以SheetName为工作表名字的worksheet不存在,则新建它
  18. If ExistsFlag = False Then
  19. Worksheets.Add(After:=Worksheets()).Name = SheetName
  20. End If
  21.  
  22. End Sub
  • 路径中提取最后的文件名
  1. '从路径C:\ab\c\d.txt 中提取文件名 d.txt
  2. Public Function GetfileName(FilePath As String) As String
  3. Dim strTemp() As String
  4. strTemp = VBA.Split(FilePath, "\")
  5. GetfileName = strTemp(UBound(strTemp))
  6. End Function
  • 用对话框选取文件路径  (单个文件)
  1. '得到指定文件的全路径
  2.  
  3. ' 出口参数:SelectedDataPath 选择的文件的全路径
  4.  
  5. ' TitleDisplayed :展示的标题
  6. ' InitalPath 起始的路径
  7. Private Sub GetFilePathFromDialog(SelectedDataPath As String, TitleDisplayed As String, InitalPath As String)
  8.  
  9. With Application.FileDialog(msoFileDialogFilePicker)
  10. .Title = TitleDisplayed ' "Select The Portfolio Holding Report:"
  11. .InitialFileName = InitalPath ' "\\192.168.0.200\files\administrative\Operation\Daily PMS\" '打开对话框后的默认展示路径,增加易用性
  12. .AllowMultiSelect = False '不允许多选
  13. .Filters.Clear '清除过滤器
  14. '.Filters.Add "Excel Files", "*.xls;*.xlw;*.xlsx;*.xlsm" '设置两个过滤器
  15. .Filters.Add "All Files", "*.*"
  16. If .Show = - Then 'Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel)
  17. SelectedDataPath = .SelectedItems()
  18. Else '说明用户按了"取消"按钮,则提示程序将退出.
  19. Err.Raise Number:= + , Description:="You click cancel buttion. Program will terminate."
  20. End If
  21. End With
  22.  
  23. End Sub
  • 用对话框选取文件路径(可以一次性选取多个文件: 主要利用 .AllowMultiSelect = True )
  1. ' 将待做CICC的 Pos rec的数据通过点选文件的方式拷贝到对应的表格
  2. Public Sub GetCiccPosRecData(WktPMS As Worksheet, WktBPFL As Worksheet, WktCCF As Worksheet, WktUBS As Worksheet)
  3. Application.ScreenUpdating = False
  4.  
  5. Dim FileItems As FileDialogSelectedItems
  6. Dim VrtItem As Variant
  7.  
  8. '通过多选的方式,选定所有文件
  9. With Application.FileDialog(msoFileDialogFilePicker)
  10. .AllowMultiSelect = True ' 允许多选
  11. .Title = "please select the files regarding to CICC position rec."
  12. .InitialFileName = WktPMS.Parent.Path ' 打开对话框后的默认展示路径,增加易用性
  13. .Filters.Clear ' 清除过滤器
  14. .Filters.Add "Excel Files", "*.xls;*.xlw;*.xlsx;*.xlsm;*.csv;*.XLS" '设置两个过滤器
  15. '.Filters.Add "All Files", "*.*"
  16. If .Show = - Then 'Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel
  17. 'SelectedDataPath = .SelectedItems(1)
  18. Set FileItems = .SelectedItems
  19. Else '说明用户按了"取消"按钮,则提示程序将退出.
  20. Err.Raise Number:= + , Description:="You click cancel buttion. Program will terminate."
  21. End If
  22. End With
  23.  
  24. For Each VrtItem In FileItems
  25. If InStr(CStr(VrtItem), "BrillianceAQM") > Then 'UBS
  26. Call GetCiccDataForOnefund(WktUBS, CStr(VrtItem))
  27. ElseIf InStr(CStr(VrtItem), "BRILLIANCE_") > Then 'BPFL
  28. Call GetCiccDataForOnefund(WktBPFL, CStr(VrtItem))
  29. ElseIf InStr(CStr(VrtItem), "ChinaCoreFund_") > Then 'CCF
  30. Call GetCiccDataForOnefund(WktCCF, CStr(VrtItem))
  31. ElseIf InStr(CStr(VrtItem), "rep_position_by_custodian_CICC") > Then ' PMS custodian: CICC
  32. Call GetCiccPMSData(WktPMS, CStr(VrtItem))
  33. Else
  34. Err.Raise Number:= + , Description:="An new file name. Please check manually."
  35. End If
  36. Next
  37.  
  38. Application.ScreenUpdating = True
  39.  
  40. Debug.Print "--------------------"
  41.  
  42. End Sub
  • Transpose 将横向的一维数组转置到 excel的列中

    1. WktOutput.Range("A2").Resize(DicAll.Count, ) = Application.WorksheetFunction.Transpose(DicAll.Keys) DicAll.Keys 这个数组 转置到 A
  • 拷贝工作表,从workbook1拷贝到 workbook2

    1. WbOMS.Worksheets("Sheet").Cells.Copy
    2. WktOmsOri.Range("A1").PasteSpecial xlPasteAll
    3.  
    4. WbSMY.Worksheets(StrDate).Cells.Copy
    5. WktSmyOri.Range("A1").PasteSpecial xlPasteAll
  • 避免剪贴后出现对话框
  1. '在粘贴后,加一句CutCopyMode = False的代码 ,以清空剪贴板.
  2.  
  3. Wkt.Cells.Copy WktDest.Range("A1")
  4. Application.CutCopyMode = False
  5.  
  6. '关闭 Source File
  7. Wkb.Save
  8. Wkb.Close
  9.  
  10. '如下代码需成对出现
  11.  
  12. Application.DisplayAlerts = False
  13. Application.ScreenUpdating = False
  • 用数组给单元格批量赋值
  1. Dim AryTitle as Variant
  2.   AryTitle = Array("Ticker", "Last Price", "Current Price", "Diff", "Only In Last", "Only In Current")
  3. Wkt.Range("A1:F1").Value = AryTitle '注意 Range的大小要和数组的长度相同.
  4. Wkt.Range("A1:F1").Font.Bold = True
 
  • 关闭某个window窗口
  1. Windows("TEST_FOR_0227_Merill_Lynch_DB_GS.xlsm").WindowState = xlMinimized

  其中Windows()的参数为窗口名称。

  • 删除导入csv等文本文件后留下的 Data connections
  1. ' Function:
  2. ' delete all the data connnections to avoid leaving many unuseful data connections behind
  3. Public Sub DeleteDataConnections()
  4.  
  5. Application.DisplayAlerts = False
  6.  
  7. Dim Wb As Workbook
  8. Dim AryConName() As String ' 存储data connections名字的数组
  9. Dim ConNum As Integer
  10. Dim Idx As Integer
  11.  
  12. Set Wb = ThisWorkbook
  13. ConNum = Wb.Connections.Count
  14. Debug.Print "[In DeleteDataConnections ] Wb.Connections.Count = " & Wb.Connections.Count
  15.  
  16. If ConNum > Then ' 如果 存在data connections链接,则先存储其names, 再利用names将其循环删除.
  17. ReDim AryConName( To ConNum) As String
  18.  
  19. For Idx = To ConNum
  20. AryConName(Idx) = Wb.Connections.Item(Idx).Name
  21. Debug.Print "[In DeleteDataConnections ] ------------>idx = " & Idx & " AryConName(Idx) = " & AryConName(Idx)
  22. Next
  23.  
  24. For Idx = To ConNum ' 利用name来循环删除,而非利用 wb.Connections.Item(idx)
  25. Wb.Connections(AryConName(Idx)).Delete
  26. Next
  27. End If
  28.  
  29. 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. struct&&class 空的大小

    #include using namespace std; class ClassA { }; class ClassB { private: int b; }; class ClassC : pub ...

  2. 【bzoj3779】重组病毒 LCT+树上倍增+DFS序+树状数组区间修改区间查询

    题目描述 给出一棵n个节点的树,每一个节点开始有一个互不相同的颜色,初始根节点为1. 定义一次感染为:将指定的一个节点到根的链上的所有节点染成一种新的颜色,代价为这条链上不同颜色的数目. 现有m次操作 ...

  3. ORACLE 向BLOB字段中出入图片等二进制文件,使用Oracle SQl Developer工具

    使用PL/SQL也可以 create directory "image" as 'e:\'; --"image" 要带双引号,网上很多不带的,我测试时出错,并且 ...

  4. Python列表及元组操作

    #列表(一组有序数据的组合就是列表) #创建列表 #空列表 var = list()#var = [] print(var,type(var)) #具有多个元素的列表 var = ['风','水',' ...

  5. BZOJ2763 [JLOI2011]飞行路线 【分层图 + 最短路】

    题目 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格 ...

  6. 在有道词典程序文件夹发现一个后缀名为sql的数据库(SQLite)

    缘起 在清理电脑磁盘的时候,看一看各安装文件夹有占用了多大容量,发现有道词典居然达140MB了,于是进去看看. 发现个有趣的文件:XXX.sql. 首先我们看一看它的安装文件夹的结构: Dict └─ ...

  7. Codeforces Round #325 (Div. 2) A

    A. Alena's Schedule time limit per test 1 second memory limit per test 256 megabytes input standard ...

  8. DP———1.最大子连续子序列和

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  9. bzoj2693 莫比乌斯反演

    Description Hint T <= 10000N, M<=10000000   https://wenku.baidu.com/view/fbec9c63ba1aa8114431d ...

  10. FastDfs java客户端上传、删除文件

    #配置文件 connect_timeout = 2 network_timeout = 30 charset = UTF-8 http.tracker_http_port = 9090 http.an ...