精华内容
下载资源
问答
  • 通过VBA遍历所有sheet并在第一页创建超链接很简单,网上已经提供了很多相关的例子,我在此列举一种最简单的,直接copy即可使用,如下: Sub lianjie() Dim x As Long x = 0 For x = 1 To Sheets.Count '从第四页...

    通过VBA遍历所有的sheet并在第一页创建超链接很简单,网上已经提供了很多相关的例子,我在此列举一种最简单的,直接copy即可使用,如下:

    Sub lianjie()

    Dim x As Long
    x = 0
    For x = 1 To Sheets.Count '从第四页开始

        Sheet1.Hyperlinks.Add Anchor:=Cells(x, 1),  _

        Address:=ActiveWorkbook.Name,    _

        SubAddress:=Sheets(x).Name & "!A1", _

        TextToDisplay:=Sheets(x).Name

    Next
    End Sub

    但是,正如大部分网上的教程,这种简单的创建链接并没有考虑到当sheet名字含有空格逗号句号等(,. )特殊符号时的情况,此时正常名字的sheet都会直接链接过去,但是含有特殊符号的sheet就会失败,显示“链接无效”!


    那么,终极大法来了,无视一切特殊符号,完美解决链接问题,代码如下(注意红色加粗部分):

    原因就是给页签名字加上单引号,这才是标准的做法,当不加的时候也可以识别,但是弊端就是含有特殊符号时会出现问题,所以建议大家始终按照第二种方案来解决。


    Sub lianjie()

    Dim x As Long
    x = 0
    For x = 1 To Sheets.Count '从第四页开始

        Sheet1.Hyperlinks.Add Anchor:=Cells(x, 1),  _

        Address:=ActiveWorkbook.Name,    _

        SubAddress:="'" & Sheets(x).Name & "'!A1", _

        TextToDisplay:=Sheets(x).Name

    Next
    End Sub


    展开全文
  • 利用VBA遍历Excel所有sheet的例子

    千次阅读 2015-12-11 17:47:00
    下面是利用VBA遍历Excel sheet的例子,可以用于Excel的批量处理。 Sub Insert_CodeString() Dim fs, ft As Object Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel....

    下面是利用VBA遍历Excel sheet的例子,可以用于Excel的批量处理。

    Sub Insert_CodeString()
    
    Dim fs, ft As Object
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    
    Dim Sql As String
        Sql = "truncate table code_string;" & Chr(10)
    Dim line As Integer
    
    Set fs = CreateObject("scripting.filesystemobject")
    Set ft = fs.createtextfile(ThisWorkbook.Path & "\" & "Insert_CodeString" & ".sql")
    
    Set xlBook = ThisWorkbook
    
    
    For x = 1 To xlBook.Sheets.Count
    
        Set xlSheet = xlBook.Sheets(x)
        
        If xlSheet.Cells(3, 1) = "代码编号" Then
    
            line = 8
            Sql = Sql & Chr(10) & Chr(10) & "--" & xlSheet.Cells(4, 2) & Chr(10)
            
            Do
                Sql = Sql & "Insert Into CODE_STRING ( CODE_TYPE,CODE_TYPE_DESC,CODE_VALUE,CODE_DESC,CODE_FLAG ) Values ( '" & xlSheet.Cells(3, 2) & "','" & xlSheet.Cells(4, 2) & "','" & xlSheet.Cells(line, 2) & "','" & xlSheet.Cells(line, 3) & "','1');" & Chr(10)
                line = line + 1
            Loop Until Len(xlSheet.Cells(line, 1).Value) = 0
            
        End If
        
    Next x
    
    Sql = Sql & Chr(10) & Chr(10) & "commit;" & Chr(10)
    
    ft.WriteLine (Sql)
    ft.Close
    
    Set ft = Nothing: Set fs = Nothing
    
    End Sub

     

    转载于:https://www.cnblogs.com/wanggs/p/5039778.html

    展开全文
  • VBA遍历文件夹内所有文件,核实表头(工作中同事表头不一致,不方便使用powerBi合并文件批量处理...) 中间用到逻辑以及知识点: 1、选择文件框,获取文件路径 2、字符串处理,将字符串按\切片成数组,相当于从右...

     VBA遍历文件夹内所有文件,核实表头(工作中同事表头不一致,不方便使用powerBi合并文件批量处理...)

    中间用到逻辑以及知识点:

    1、选择文件框,获取文件路径

    2、字符串处理,将字符串按\切片成数组,相当于从右向左删除文件名,获得文件所在文件夹路径,且最后保留"\"(至于这里为什么不直接选择文件夹而是选择文件,当时脑抽了/./)

    3、忽略程序报错,核实是否存在某一个工作表sheet的名字,如果没有,则新建一个

    F、遍历所有文件,打开,复制第一行

    5、重新遍历所有文件,不过这次无须打开,直接取数组中的变量即可

    Sub Verify_the_header()
        Dim MyFile As String, arr(1000) As String, count As Integer, k As Integer, wb As Workbook, wb_1 As Workbook, brr(1000) As String, book_name As String, str As String
        k = 1
        count = 1
        Set wb = ThisWorkbook
        '选择单个文件对话框,通过对话框选择文件
        With Application.FileDialog(msoFileDialogFilePicker)
            .title = "请先选择文件夹里面的任一文件,用于路径确认"                        '选择窗口的标题
            .InitialFileName = "D:\user\用于路径确认.txt" '初次打开窗口的路径以及默认名称
            .AllowMultiSelect = False                       '是否允许选择多个文件
            .Filters.Clear                                  '清除现有规则
            .Filters.Add "Text File", "*.txt"               '增加规则
            .Filters.Add "EXCEL File", "*.xlsx; *.xls", 1   '增加规则到第一位
            .Filters.Add "All File", "*.*", 1               '增加规则到第一位
            If .Show Then                                   '显示文件选择对话框
                .ButtonName = "Select Me"
                Set ipath = .SelectedItems                  '获取选择项,无论是否选择一项还是多项,返回的选项都是多项
            End If
        End With
        
        If IsEmpty(ipath) Then Exit Sub     '如果按取消键,退出
        ipath = ipath(1)                    '获取第一项选择
        Debug.Print ipath                '输出选择文件名
        crr = Split(ipath, "\")
        str = crr(UBound(crr))
        book_name = Replace(ipath, str, "")
        Debug.Print (book_name)
        
        
        MyFile = Dir(book_name & "*.xlsx")
        arr(count) = MyFile
        Do While MyFile <> ""
            MyFile = Dir
            If MyFile = "" Then
                Exit Do
            End If
            count = count + 1
            arr(count) = MyFile
        Loop
        '忽略报错
        On Error Resume Next
        '判断是否有表头核实这个sheet,如果没有则新建一个,如果有就什么都不做
        If (ThisWorkbook.Sheets("表头核实") Is Nothing) Then
            ThisWorkbook.Sheets.Add.Name = "表头核实"
        End If
        wb.Sheets("表头核实").Move before:=Sheets(1) '将表头移动到最前面
        wb.Sheets("表头核实").Range("a1:cc1000000").Clear
        For i = 1 To count
            Set wb_1 = Workbooks.Open(book_name & arr(i))
            wb_1.Sheets(1).Rows(1).Copy wb.Worksheets("表头核实").Rows(k)
            k = k + 1
            brr(i) = wb_1.Sheets(1).Name
            Debug.Print arr(i)
            ActiveWorkbook.Close savechanges = True '关闭打开的文件
        Next
        wb.Worksheets("表头核实").Activate
        Columns(1).Select
        Selection.Insert shift:=xlToRight
        Selection.Insert shift:=xlToRight
        Range("a1:a1").Select
        For i = 1 To count
            wb.Worksheets("表头核实").Cells(i, 1).FormulaR1C1 = arr(i)
            wb.Worksheets("表头核实").Cells(i, 2).FormulaR1C1 = brr(i)
        Next
    End Sub

     

    展开全文
  • 今天项目上有个应用,获取指定Excel文件下的所有sheet的名称以及当前sheet中指定单元格的值,并把他们写到固定的sheet中去,看了下,文件比较多,而且每个文件sheet的个数比较多,也不一样,所以打算写个程序来帮...

    https://www.cnblogs.com/mq0036/p/4195836.html
    今天项目上有个应用,获取指定Excel文件下的所有sheet的名称以及当前sheet中指定单元格的值,并把他们写到固定的sheet中去,看了下,文件比较多,而且每个文件sheet的个数比较多,也不一样,所以打算写个程序来帮我们实现任务,代码很简单,也写的比较死板。欢迎大家给出意见及你的代码:

    Sub aaaa()
    Dim sh1, sh2 As Worksheet
    Dim shName, cellValue As String
    'On Error Resume Next
    
    Set sh1 = Workbooks(1).Sheets(1)
    'Workbooks.Open Filename:="D:\_jack\Finance Report\Report Layout\TA Opex Report 2014.xlsx"
    Workbooks.Open Filename:="D:\_jack\Finance Report\Report Layout\Rolling PL Template v1 (2).xlsx"
    
    For i = 1 To Workbooks(2).Worksheets.Count
        Workbooks(2).Activate
        Set sh2 = ActiveWorkbook.Worksheets(i)
        sh2.Activate
        n = sh2.Name
        'v = sh2.Cells(5, 7).Value  'G5单元格
        v = sh2.Cells(4, 3).Value  'C4单元格
        
        Workbooks(1).Activate
        sh1.Activate
        sh1.Cells(i, 1) = n
        sh1.Cells(i, 2) = v
        
    Next
    Workbooks(2).Close
    End Sub
    
    展开全文
  • 今天项目上有个应用,获取指定Excel文件下的所有sheet的名称以及当前sheet中指定单元格的值,并把他们写到固定的sheet中去,看了下,文件比较多,而且每个文件sheet的个数比较多,也不一样,所以打算写个程序来帮...
  • 使用Excel的VBProject可以导出文件中的VBA代码,但是有的文件有宏密码保护,导出就会报错。...把VBS放在要导出的文件夹下运行,遍历该路径下所有的Excel文件,并在放置VBS的路径生成Excel文件名的文件夹...
  • 输入以下代码:Private Sub CommandButton1_Click()Dim path, yuan_name '定义路径名,被合并表名称Dim wb As Workbookpath = ThisWorkbook.path '指定路径为... "*.xlsx") '从该文件夹内遍历所有要合并的表格Do W...
  • 工作原因,需要统计所有单位的帐号信息,但是每个单位的帐号都分散在各自的excel表格里,因此需要把多个execel表格的相同的某个sheet页做合并。 大致步骤拆分,分别搜了下VBA,拼凑了三天搞定,还是有点成就感的 ...
  • 可以将一个文件夹中的所有xlsx或类似的表格文件批量转换为pdf文件,遍历每个工作表的每个sheet并逐一转换。 Sub TO_PDF() On Error Resume Next Dim ALL_FILE As String, SourcePath As String, NewSaveFile As...
  • Excel如何自动生成有超链接的Sheet目录?...✔这里我先不给出答案,我给出我来做这个思路:我想到要做目录,首先要对所有Sheet进行循环遍历,获取Sheet的名字,然后在目录表中列出来每个Sheet的名字,并...
  • VBA_操作单元03

    2020-05-17 01:27:01
    '新建表 Sub xinjianbiao() Dim sht As Worksheet Dim k As Integer For i = 1 To 3 k = 0 For Each sht In Sheets ... i) Then '遍历所有表判断是否重复,重复标记1 k = 1 End If Next If k = 0 Then ...
  • 同一个文件夹有多个工作簿,工作簿中有相同格式的多个sheet表,其中有两个固定的SHEET需要打印(所有EXCEL工作簿表格中两个固定SHEET的名字相同)。每次打开这么多文档,再将表格一个个打印很繁琐,有什么快捷的方法...
  • 之前讲过怎样利用OPEN方法从多个Excel中获得数据,今天我们再来看一个类似的例子,这次我们不是从Excel中取数据,而是要对Excel进行一系列的操作,例如我们要对文件夹中的所有Excel的Sheet1的A1输入“战战如疯”,将...
  • 一、将一个工作簿中所有工作表单独保存为独立的文件 操作过程分三步:选中要复制的sheet,,复制(建立副本),保存后关闭新... For Each sht In Sheets/*所有sheet遍历*/ sht.Copy /*复制sheet,如果是移动则用...
  • '遍历所有工作表 For i = 1 To aimBook.Worksheets.count '从sheet1遍历到最后一张工作表 rowCount = count(aimBook.Sheets(i)) '召唤统计行数的Function aimSheetName = aimBook.Sheets(i).Name MsgBox ...
  • 需求: 根据列合并; 同一列中相邻内容一致的合并成一个单元格, 以变美观 分析: ...自动判断所有的行数; 进行循环遍历; 将此列内容相同的相邻2列或几列, 合并单元格 难点: 合并单元...
  • 在工作簿名为“A公司”新建表格,然后把该公司要打卡所有员工信息贴进去,如未在sheet1中找到这个公司要打卡的人姓名,则I列表示N.A 【逻辑】 遍历文件夹中名称不等于自身的表格。 总名单表格为arr 新建的表格...
  • 1.遍历Excel所有sheet表:整体思路:获取excel所有sheet表数据--读取数据并合并成一个表--输出 import pandas as pd book='D:/VBA学习/报表生成/1_派单表20年5月.xlsx' #读取数据(整个Excel工作薄) def read_...
  • 实现excel多个工作表合成为一个

    千次阅读 2019-04-10 10:53:04
    用到宏 alt+f11调出vba 创建一个模块 粘贴代码如下 Sub Comb() Dim i% On Error Resume Next Sheets(1).Select ...Worksheets.Add '新建一个工作表 ...For i = 2 To Sheets.Count 'For循环,遍历所有工作表 Sheet...
  • 中文版Excel.2007图表宝典 1/2

    热门讨论 2012-04-06 18:49:24
     本书的作者John Walkenbach是享有国际美誉的“电子表格先生”,他利用自己15年来使用Excel的经验,毫无保留地传授了学习和使用Excel的所有知识,为读者掌握Excel提供了绝佳的途径。本书的前两个版本均已获得巨大...
  • 中文版Excel.2007图表宝典 2/2

    热门讨论 2012-04-06 19:01:36
     本书的作者John Walkenbach是享有国际美誉的“电子表格先生”,他利用自己15年来使用Excel的经验,毫无保留地传授了学习和使用Excel的所有知识,为读者掌握Excel提供了绝佳的途径。本书的前两个版本均已获得巨大...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

vba遍历所有sheet