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

删除导入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. Could not automatically select an Xcode project. Specify one in your Podfile like so

    需要将Podfile文件放置在根目录下,而不能放置在项目的里面. 更改路径即可

  2. 【Python】- pytharm 中import时无法识别自己写的程序

    右键点击自己的工作空间,找下面的Mark Directory as(将目录标记为) 选择Source Root,就可以解决上面的问题了,如图

  3. Java String学习笔记

    参照:https://www.jianshu.com/p/2f209af80f84 常量池: Java代码被编译成class文件时,会生成一个常量池(Constant pool)的数据结构,用以保存字 ...

  4. 【bzoj3561】DZY Loves Math VI 莫比乌斯反演

    题目描述 给定正整数n,m.求   输入 一行两个整数n,m. 输出 一个整数,为答案模1000000007后的值. 样例输入 5 4 样例输出 424 题解 莫比乌斯反演 (为了方便,以下公式默认$ ...

  5. [bzoj] 3343 教主的魔法 || 带修改分块

    原题 长度为n的序列,有两种操作: 1.[l,r]区间每个数+w 2.询问[l,r]区间有多少个数>c 记录lazy数组即可. #include<cstdio> #include&l ...

  6. Tomcat学习笔记(十二)

    Host和Engine容器 Context容器的父容器通常是Host容器. Engine容器表示Catalina的整个servlet引擎.如果使用Engine容器,那么它总是处于容器层级的最顶层.默认 ...

  7. vue jsonp解决跨域处理

    1.安装vue jsonp npm i -S vue-jsonp 2.在main.js中导入vue-jsonp import VueJsonp from 'vue-jsonp' 通过use方法,挂载到 ...

  8. 【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 ...

  9. python接口自动化6-重定向(Location)【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/python%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E ...

  10. Android (Notification)消息推送机制

    从网上查询资料学习Android消息推送机制,效果图如下: 1.首先是布局文件代码 activity_main.xml <?xml version="1.0" encodin ...