精华内容
下载资源
问答
  • SUB 批量增加命名工作表() For L = 1 To 100 Sheets.Add(, Sheets("发票表头")).Name = "发票表" & i NEXT END SUB SUB 批量删除工作表() Application.DisplayAlerts = 0 ‘’‘关闭提示 On Error Resume ...
    SUB 批量增加命名工作表()
     For L = 1 To 100
    Sheets.Add(, Sheets("发票表头")).Name = "发票表" & i
    NEXT
    
    END SUB
    
    SUB 批量删除工作表()
    Application.DisplayAlerts = 0  ‘’‘关闭提示
    On Error Resume Next
    X = Worksheets.Count
    For i = 1 To X 
    
    Worksheets("发票表" & i).Delete
    Next
    Application.DisplayAlerts = 1
    MsgBox ("完成" & X - 3 & "个工作表删除!")
    end SUB
    
    展开全文
  • 有一个汇总,要根据其中一列姓名筛选数据另存为新的表格,表格按对应姓名命名后,需要再分别作为附件发给对应姓名的邮箱。期间翻书和上网查询,怎么筛选数据,怎么另存为,怎么自动发邮件,先实现简单的需求,...

    大一的时候学的VB,大学毕业之后就没用过,没想到时隔多年,工作中又有需求了。

    有一个汇总表,要根据其中一列姓名筛选数据并另存为新的表格,表格按对应姓名命名后,需要再分别作为附件发给对应姓名的邮箱。

    期间翻书和上网查询,怎么筛选数据,怎么另存为,怎么自动发邮件,先实现简单的需求,筛选一个数据并另存,之后再用变量去赋值进行循环,花了一天半,终于实现所有需求。

    后来又增加了新的需求,比如有多个不同的表格,需要筛选的姓名这一列也不在同一个位置,有的在第二列,有的第三列,这样VBA自动筛选的参数列就不能直接填数字,而是必须先判断筛选列是在哪一列才能开始筛选。

    新的需求略复杂,多个循环和if判断,中途还因为操作失误把代码删除未保存,心塞了半个多小时,但好在重新振作,理顺了逻辑,耗时三天让代码顺利跑了起来,拆分了四个源数据表,共计七十多个分表。

    之后就是怎么根据分表去给不同的收件人发邮件,并且和之前的不一样,这次发件人也不一样,于是想到定制一个筛选,不用的发件人勾选自己发送,然后可以向对应的收件人发送对应的附件和正文。

    总体感觉,虽然现在VBA处于各类编程语言末端位置,但作为办公利器,vba的操作简便,网上资源也多,在办公自动化方面还是有很大优势的。以上需求用Python也能实现,但还是vba更方便一些。

    工作关系,不方便直接上代码,有时间再用自己的电脑复盘,欢迎找我讨论~

    0b63a5cdd69fec125b2116388e60e45a.png
    展开全文
  • 有一个汇总,要根据其中一列姓名筛选数据另存为新的表格,表格按对应姓名命名后,需要再分别作为附件发给对应姓名的邮箱。期间翻书和上网查询,怎么筛选数据,怎么另存为,怎么自动发邮件,先实现简单的需求,...

    大一的时候学的VB,大学毕业之后就没用过,没想到时隔多年,工作中又有需求了。

    有一个汇总表,要根据其中一列姓名筛选数据并另存为新的表格,表格按对应姓名命名后,需要再分别作为附件发给对应姓名的邮箱。

    期间翻书和上网查询,怎么筛选数据,怎么另存为,怎么自动发邮件,先实现简单的需求,筛选一个数据并另存,之后再用变量去赋值进行循环,花了一天半,终于实现所有需求。

    后来又增加了新的需求,比如有多个不同的表格,需要筛选的姓名这一列也不在同一个位置,有的在第二列,有的第三列,这样VBA自动筛选的参数列就不能直接填数字,而是必须先判断筛选列是在哪一列才能开始筛选。

    新的需求略复杂,多个循环和if判断,中途还因为操作失误把代码删除未保存,心塞了半个多小时,但好在重新振作,理顺了逻辑,耗时三天让代码顺利跑了起来,拆分了四个源数据表,共计七十多个分表。

    之后就是怎么根据分表去给不同的收件人发邮件,并且和之前的不一样,这次发件人也不一样,于是想到定制一个筛选,不用的发件人勾选自己发送,然后可以向对应的收件人发送对应的附件和正文。

    总体感觉,虽然现在VBA处于各类编程语言末端位置,但作为办公利器,vba的操作简便,网上资源也多,在办公自动化方面还是有很大优势的。以上需求用Python也能实现,但还是vba更方便一些。

    工作关系,不方便直接上代码,有时间再用自己的电脑复盘,欢迎找我讨论~

    6a8e9ba65cfc81ed615da325889a8040.png
    展开全文
  • 常用VBA小技巧

    2019-10-07 03:38:43
    用对话框选取文件路径(单个文件) ...增加新的工作表并并命名 Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "333" 检查工作表是否存在,若不存在则新建 '参数: ' S...

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

     

    删除导入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(3)).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 = -1 Then                                     'Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel)
                    SelectedDataPath = .SelectedItems(1)
                Else    '说明用户按了"取消"按钮,则提示程序将退出.
                    Err.Raise Number:=512 + 1, 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 = -1 Then                                     'Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel)
                'SelectedDataPath = .SelectedItems(1)
                Set FileItems = .SelectedItems
            Else    '说明用户按了"取消"按钮,则提示程序将退出.
                Err.Raise Number:=512 + 1, Description:="You click cancel buttion. Program will terminate."
            End If
        End With
        
        
        For Each VrtItem In FileItems
            If InStr(CStr(VrtItem), "BrillianceAQM") > 0 Then                   'UBS
                Call GetCiccDataForOnefund(WktUBS, CStr(VrtItem))
            ElseIf InStr(CStr(VrtItem), "BRILLIANCE_") > 0 Then             'BPFL
                Call GetCiccDataForOnefund(WktBPFL, CStr(VrtItem))
            ElseIf InStr(CStr(VrtItem), "ChinaCoreFund_") > 0 Then          'CCF
                Call GetCiccDataForOnefund(WktCCF, CStr(VrtItem))
            ElseIf InStr(CStr(VrtItem), "rep_position_by_custodian_CICC") > 0 Then          ' PMS custodian: CICC
                Call GetCiccPMSData(WktPMS, CStr(VrtItem))
            Else
                Err.Raise Number:=512 + 13, 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, 1) = 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 > 0 Then                                                                          ' 如果 存在data connections链接,则先存储其names, 再利用names将其循环删除.
            ReDim AryConName(1 To ConNum) As String
            
            For Idx = 1 To ConNum
                AryConName(Idx) = Wb.Connections.Item(Idx).Name
                Debug.Print "[In DeleteDataConnections ] ------------>idx = " & Idx & "    AryConName(Idx) = " & AryConName(Idx)
            Next
        
            For Idx = 1 To ConNum                                                                   ' 利用name来循环删除,而非利用 wb.Connections.Item(idx)
                Wb.Connections(AryConName(Idx)).Delete
            Next
        End If
        
    
    End Sub

     

    转载于:https://www.cnblogs.com/bmrs/p/7651649.html

    展开全文
  • 完成将多张表合并到一个工作簿中,标签命名增加制表日期。 簿与簿直接的操作基本如下: 1.一簿一之间的复制 一对一 2.多个一簿一的合并 3.多个一簿多与一簿一的合并 现在在目录下新建文件夹test,...
  • 03034新建工作表并重命名 03035复制工作表 03036移动工作表 03037删除工作表 03038保护工作表 03039撤销保护工作表 03040按工作表名称重新排列工作表 03041选定工作表 03042激活工作表 03043显示选定工作表的快捷...
  • 只需学习前2章就可以掌握如何创建基本的数据透视表并提高生产率,在数分钟内生成报表。 在前6章内可以学会使用数据透视表快速突出显示排名前1O的客户或者收益率排在后5位的产品;快速创建分析结果,根据产品或者...
  • 只需学习前2章就可以掌握如何创建基本的数据透视表并提高生产率,在数分钟内生成报表。 在前6章内可以学会使用数据透视表快速突出显示排名前1O的客户或者收益率排在后5位的产品;快速创建分析结果,根据产品或者...
  • 只需学习前2章就可以掌握如何创建基本的数据透视表并提高生产率,在数分钟内生成报表。 在前6章内可以学会使用数据透视表快速突出显示排名前1O的客户或者收益率排在后5位的产品;快速创建分析结果,根据产品或者...
  • 只需学习前2章就可以掌握如何创建基本的数据透视表并提高生产率,在数分钟内生成报表。 在前6章内可以学会使用数据透视表快速突出显示排名前1O的客户或者收益率排在后5位的产品;快速创建分析结果,根据产品或者...
  • Excel百宝箱8.0

    2011-06-07 21:32:17
    【筛选唯一值】【建工作表目录】【批量新建复制工作表】【批量加解密】【工作表批量命名】【破解工作表/簿密码】 【批量命名文件】【可还原的合并】【合并列中相同值】【取消合并还原数据】【合并区域自动换行】...
  • 【插入行数】 对工作表隔行插入行可以复制标题行,其中对相隔行数、插入行数等可以自定义。 【注解样式】 可以插入多达50种样式的注解,支持随时切换当前注解样式为指定的样式。 【工作表拆分】 将当前工作表的某...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    【插入行数】 对工作表隔行插入行可以复制标题行,其中对相隔行数、插入行数等可以自定义。 【注解样式】 可以插入多达50种样式的注解,支持随时切换当前注解样式为指定的样式。 【工作表拆分】 将当前工作表的...
  • 【插入行数】 对工作表隔行插入行可以复制标题行,其中对相隔行数、插入行数等可以自定义。 【注解样式】 可以插入多达50种样式的注解,支持随时切换当前注解样式为指定的样式。 【工作表拆分】 将当前工作表的...
  • 【插入行数】 对工作表隔行插入行可以复制标题行,其中对相隔行数、插入行数等可以自定义。 【注解样式】 可以插入多达50种样式的注解,支持随时切换当前注解样式为指定的样式。 【工作表拆分】 将当前工作表的...
  • EXCEL百宝箱8.0终极版

    2011-11-05 16:48:02
    【插入Flash动画】:将Flash动画插入工作表播放,自动获取Flash大小,可以自定义Flash的大小和位置,Flash动画嵌入工作表中 【提取选区唯一值】:将选择区域的数据,置于当前列中,忽略重复值。 【清除列中重复值...
  • 【EXCEL比较工具】 打开比较任意两个EXCEL文档工作表内容之间的差异,可对比出哪些内容作了修改。 【工具箱选项】 集成工具箱的基本选项设置。基本分为<显示设置区><隐藏功能区><自动备份区><工作表设置区><功能...
  • 1517.3.2 链接Excel工作表 1567.4 使用Microsoft Outlook和Exchange 文件夹 1567.4.1 用Outlook导出和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617....
  • 1487.2.5 将字段数据类型转换为Access数据类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将数据库文件链接为表 1507.3 导入和链接电子数据表文件 1517.3.1 通过导入Excel工作表创建一个表 1517....
  • 1487.2.5 将字段数据类型转换为Access数据类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将数据库文件链接为表 1507.3 导入和链接电子数据表文件 1517.3.1 通过导入Excel工作表创建一个表 1517....
  • 1487.2.5 将字段数据类型转换为Access数据类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将数据库文件链接为表 1507.3 导入和链接电子数据表文件 1517.3.1 通过导入Excel工作表创建一个表 1517....
  • 1487.2.5 将字段数据类型转换为Access数据类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将数据库文件链接为表 1507.3 导入和链接电子数据表文件 1517.3.1 通过导入Excel工作表创建一个表 1517....
  • 1487.2.5 将字段数据类型转换为Access数据类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将数据库文件链接为表 1507.3 导入和链接电子数据表文件 1517.3.1 通过导入Excel工作表创建一个表 1517....
  • 1487.2.5 将字段数据类型转换为Access数据类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将数据库文件链接为表 1507.3 导入和链接电子数据表文件 1517.3.1 通过导入Excel工作表创建一个表 1517....
  • 1487.2.5 将字段数据类型转换为Access数据类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将数据库文件链接为表 1507.3 导入和链接电子数据表文件 1517.3.1 通过导入Excel工作表创建一个表 1517....
  • 1487.2.5 将字段数据类型转换为Access数据类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将数据库文件链接为表 1507.3 导入和链接电子数据表文件 1517.3.1 通过导入Excel工作表创建一个表 1517....
  • 1487.2.5 将字段数据类型转换为Access数据类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将数据库文件链接为表 1507.3 导入和链接电子数据表文件 1517.3.1 通过导入Excel工作表创建一个表 1517....
  • 1487.2.5 将字段数据类型转换为Access数据类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将数据库文件链接为表 1507.3 导入和链接电子数据表文件 1517.3.1 通过导入Excel工作表创建一个表 1517....
  • 1487.2.5 将字段数据类型转换为Access数据类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将数据库文件链接为表 1507.3 导入和链接电子数据表文件 1517.3.1 通过导入Excel工作表创建一个表 1517....
  • 1487.2.5 将字段数据类型转换为Access数据类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将数据库文件链接为表 1507.3 导入和链接电子数据表文件 1517.3.1 通过导入Excel工作表创建一个表 1517....

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

vba增加工作表并命名