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

删除导入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. SQL小助手——SQL Prompt

    背景: 当数据库设计的比较复杂.庞大时,我们如果对脚本不是很熟悉,就会很难完成看似简单的增.删.改.查的操作.我们需要一款软件来给出相应的提示或帮助,来提高代码的可读性,更快更好的完成任务. 简介: ...

  2. InnoDB 存储引擎的线程与内存池

    InnoDB 存储引擎的线程与内存池   InnoDB体系结构如下: 后台线程: 1.后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据: 2.另外,将以修改的数据文件刷 ...

  3. 存储 磁盘大于2TB 大数据存储一个盘 解决方法

    1.vmware虚拟机环境下可以做裸映射 但是一个存储 只能对应一个虚拟主机裸映射 我已经在一个10TB的存储上做好多个主机,就不适用了 2.在虚拟机上添加5个2TB磁盘,磁盘管理中新建 带区卷 可以 ...

  4. vue cli 3 & webpack-merge & webpack 3 & bug

    vue cli 3 & webpack-merge & webpack & bug bug webpack-merge & bug webpack-merge ??? ...

  5. 【bzoj2565】最长双回文串 Manacher+树状数组

    原文地址:http://www.cnblogs.com/GXZlegend/p/6802558.html 题目描述 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc ...

  6. BZOJ2208 [Jsoi2010]连通数 【图的遍历】

    题目 输入格式 输入数据第一行是图顶点的数量,一个正整数N. 接下来N行,每行N个字符.第i行第j列的1表示顶点i到j有边,0则表示无边. 输出格式 输出一行一个整数,表示该图的连通数. 输入样例 3 ...

  7. Tomcat学习笔记(三)

    Tomcat连接器 tomcat连接器是tomcat的一个核心组件,在tomcat4中的实现原理如下 1.实现Connector接口 2.创建Request对象 3.创建Response对象 tomc ...

  8. (计数器)NOIP模拟赛(神奇的数位DP题。。)

    没有原题传送门.. 手打原题QAQ [问题描述]     一本书的页数为N,页码从1开始编起,请你求出全部页码中,用了多少个0,1,2,…,9.其中—个页码不含多余的0,如N=1234时第5页不是00 ...

  9. mogadm修改硬盘状态

    #查看主机序列mogadm host list #查看空间快满的分区 df -h#检查硬盘序列和状态ls -l /data/mogile_data/ #查看mogadm目录下软链接的目录对应的分区 # ...

  10. 【linux高级程序设计】(第九章)进程间通信-管道 1

    Linux操作系统所支持的主要进程间的通信机制. 无名管道 PIPE cat test.txt| grep hello 上面这种管道,将一个命令的输出作为另一个命令的输入,而这种管道是临时的,命令执行 ...