zoukankan      html  css  js  c++  java
  • VBA 文件操作

    'excel文件和工作簿

    excel文件就是excel工作簿,excel文件打开需要excel程的支持

    'Workbooks 工作簿集合,泛指excel文件或工作簿

    'Workbooks("A.xls"),名称为A的excel工作簿

         Sub t1()
            Workbooks("A.xls").Sheets(1).Range("a1") = 100
         End Sub

    workbooks(2),按打开顺序,第二个打开的工作簿。

          Sub t2()
            Workbooks(2).Sheets(2).Range("a1") = 200
         End Sub

    ActiveWorkbook ,当打开多个excel工作簿时,你正在操作的那个就是ActiveWorkbook(活动工作簿)

    Thisworkbook,VBA程序所在的工作簿,无论你打开多少个工作簿,无论当前是哪个工作簿是活动的,thisworkbook就是指它所在的工作簿。

    '工作簿窗口

    'Windows("A.xls"),A工作簿的窗口,使用windows可以设置工作簿窗口的状态,如是否隐藏等。

     Sub t3()
            Windows("A.xls").Visible = False
         End Sub
         Sub t4()
            Windows(2).Visible = True
         End Sub

    1 判断A.Xls文件是否存在

        Sub W1()
         If Len(Dir("d:/A.xls")) = 0 Then
           MsgBox "A文件不存在"
         Else
           MsgBox "A文件存在"
         End If
       End Sub

    '2 判断A.Xls文件是否打开

        Sub W2()
         Dim x As Integer
          For x = 1 To Windows.Count
            If Windows(x).Caption = "A.XLS" Then
              MsgBox "A文件打开了"
              Exit Sub
            End If
          Next
        End Sub

    3 excel文件新建和保存

      Sub W3()
         Dim wb As Workbook
         Set wb = Workbooks.Add
           wb.Sheets("sheet1").Range("a1") = "abcd"
         wb.SaveAs "D:/B.xls"
      End Sub

    4 excel文件打开和关闭

     Sub w4()
        Dim wb As Workbook
        Set wb = Workbooks.Open("D:/B.xls")
        MsgBox wb.Sheets("sheet1").Range("a1").Value
        wb.Close False
     End Sub

    5 excel文件保存和备份

       Sub w5()
          Dim wb As Workbook
          Set wb = ThisWorkbook
          wb.Save
          wb.SaveCopyAs "D:/ABC.xls"
       End Sub

    6 excel文件复制和删除

       Sub W6()
          FileCopy "D:/ABC.XLS", "E:/ABCd.XLS"
          Kill "D:/ABC.XLS"
       End Sub

    工作表

    概念

    'excel工作表的分类


    'excel工作表有两大类,一类是我们平常用的工作表(worksheet),另一类是图表、宏表等。这两类的统称是sheets

    'sheets 工作表集合,泛指excel各种工作表

    'Sheets("A"),名称为A的excel工作表
    Sub t1()
    Sheets("A").Range("a1") = 100
    End Sub

    'workbooks(2),按打开顺序,第二个打开的工作簿。

    Sub t2()
    Sheets(2).Range("a1") = 200
    End Sub


    'ActiveSheet ,当打开多个excel工作簿时,你正在操作的那个就是ActiveSheet

    1 判断A工作表文件是否存在

        Sub s1()
         Dim x As Integer
          For x = 1 To Sheets.Count
            If Sheets(x).Name = "A" Then
              MsgBox "A工作表存在"
              Exit Sub
            End If
          Next
          MsgBox "A工作表不存在"
        End Sub

    2 excel工作表的插入

      Sub s2()
         Dim sh As Worksheet
         Set sh = Sheets.Add
           sh.Name = "模板"
           sh.Range("a1") = 100
      End Sub

    '3 excel工作表隐藏和取消隐藏

     Sub s3()
        Sheets(2).Visible = True
     End Sub

    4 excel工作表的移动

       Sub s4()
         Sheets("Sheet2").Move before:=Sheets("sheet1") 'sheet2移动到sheet1前面
         Sheets("Sheet1").Move after:=Sheets(Sheets.Count) 'sheet1移动到所有工作表的最后面
       End Sub

    6 excel工作表的复制

       Sub s5() '在本工作簿中
          Dim sh As Worksheet
          Sheets("模板").Copy after:=Sheets(Sheets.Count)
           Set sh = ActiveSheet
              sh.Name = Sheets.Count & ""
              sh.Range("a1") = "测试"
       End Sub

    7 另存新的工作薄

       Sub s6() '另存为新工作簿
          Dim wb As Workbook
           Sheets("模板").Copy
           Set wb = ActiveWorkbook
              wb.SaveAs ThisWorkbook.Path & "/1日.xls"
              wb.Sheets(1).Range("b1") = "测试"
              wb.Close True
       End Sub

    '7 保护工作表

       Sub s7()
          Sheets("sheet2").Protect "123"
       End Sub
    
       Sub s8() '判断工作表是否添加了保护密码
          If Sheets("sheet2").ProtectContents = True Then
            MsgBox "工作簿保护了"
          Else
            MsgBox "工作簿没有添加保护"
          End If
       End Sub

     '8 工作表删除

         Sub s9()
           Application.DisplayAlerts = False
             Sheets("模板").Delete
           Application.DisplayAlerts = True
         End Sub

    '9 工作表的选取

         Sub s10()
           Sheets("sheet2").Select
         End Sub

    例题 

    题 1

    复制“日报表模板”工作表(已隐藏)至本工作簿最后一个位置,复制后的工作表名称为最后的日期天数+1&"报表"的格式。
    如:
    当前情况下,没有任何一天的日报表,则新复制的工作表名称是“1日报表”,如果再添加时就是1+1=2日报表。如果目前已存在5天的日报表,则复制后的工作表名称应为“6日报表”

    注:“日报表模板”工作表复制后要隐藏起来

    Sub 日报表格式生成()
    Dim msh As Worksheet, shname$
    Application.ScreenUpdating = False
    Set msh = Sheets("日报表模板")
    shname = Sheets(Sheets.Count).Name
    With msh
        .Visible = xlSheetVisible
        .Copy after:=Sheets(Sheets.Count)
        .Visible = xlSheetHidden
    End With
    If shname = msh.Name Or shname = "第1题" Then
        ActiveSheet.Name = 1 & "日报表"
    Else
        ActiveSheet.Name = Left(shname, Len(shname) - 3) + 1 & "日报表"
    End If
    Application.ScreenUpdating = True
    End Sub

    题目2:

    把所有日报表另存为工作簿到本文夹下,工作簿名称为工作表的名称

    Sub 另存报表()
    Dim ish As Worksheet, myname$
    Application.ScreenUpdating = False
    For Each ish In ThisWorkbook.Worksheets
    myname = ish.Name
    If myname <> "第1题" And myname <> "日报表模板" Then
        ish.Move
        ActiveWorkbook.SaveAs ThisWorkbook.Path & "/" & myname & ".xls"
        ActiveWorkbook.Close
    End If
    Next
    Application.ScreenUpdating = True
    End Sub
  • 相关阅读:
    判断三点是否共线
    canvas判断点是否在路径内
    如何获取canvas当前的缩放值
    杨辉三角与排列组合数
    WEB 三维引擎在高精地图数据生产的探索和实践
    高精地图数据应用分发引擎建设实践
    视觉感知未来,高德数据采集模型部署实践!
    高德Serverless平台建设及实践
    高德客户端低代码系统架构实践
    数据人必读!玩转数据可视化用这个就够了——高德LOCA API 2.0升级来袭!
  • 原文地址:https://www.cnblogs.com/heshun/p/12354829.html
Copyright © 2011-2022 走看看