【011】Excel宏编程相关封装模块(新建文件、关闭文件、新增/删除工作薄)_004_#VBA

1. 说明

该模块是根据Excel宏编程官网及录制时相关操作进行编写的,如有不足之处,望批评指正!!!

2. 代码

2.1 新建文件

新建个文件,可以是任意格式的。例如:.xlsx、.xls、.txt、.doc…

Function AssistNewFile(Filename, PathName)
'新建文件 _ 文件名_文件地址

    Workbooks.Add
    ActiveWorkbook.SaveAs Filename:=PathName & Filename

End Function

输入内容

call AssistNewFile("Filename.xlsx", "c:/")

2.2 关闭文件

根据是否需要保存文件要求进行保存

Function AssistClose(Filename, T)
'关闭相应文件 _ 文件名_关闭时保存与否(1为关闭)
    
    Windows(Filename).Activate
    If T = 1 Then
        ActiveWorkbook.Close SaveChanges:=True
    ElseIf T = 0 Then
        ActiveWorkbook.Close SaveChanges:=False
    ElseIf T = 2 Then
        ActiveWorkbook.Save
    End If
    
End Function

2.3 新增工作薄

按需要设置工作薄名称
下面是特定需要的,提前预设名称

Function AssistOldAddSh(Filename, T)
'老文件新建工作薄,用于存放整理出来的数据 _ 文件名_是否只取放电(1为是)_是否增加1C充放电(1为是)

    Windows(Filename).Activate
    If T = 0 Then
        Sheets.Add After:=ActiveSheet
        Sheets("Sheet1").Select
        Sheets("Sheet1").Name = "充电特性数值"
        Sheets.Add After:=ActiveSheet
        Sheets("Sheet2").Select
        Sheets("Sheet2").Name = "放电特性数值"
        Sheets.Add After:=ActiveSheet
        Sheets("Sheet3").Select
        Sheets("Sheet3").Name = "容量倍率展示"
    Else
        Sheets.Add After:=ActiveSheet
        Sheets("Sheet1").Select
        Sheets("Sheet1").Name = "放电特性数值"
        Sheets.Add After:=ActiveSheet
        Sheets("Sheet2").Select
        Sheets("Sheet2").Name = "容量倍率展示"
    End If
    
    ActiveWorkbook.Save
    
End Function

这里给于自定义接口,工作薄名可以根据Name1和Name2输入

Function AssistNewAddSh(Filename, Name1, Name2)
'老文件新建工作薄,用于存放整理出来的数据 _ 文件名_工作薄1_工作薄2

        Windows(Filename).Activate
        Sheets("Sheet1").Select
        Sheets("Sheet1").Name = Name1
        Sheets.Add After:=ActiveSheet
        Sheets("Sheet2").Select
        Sheets("Sheet2").Name = Name2
        
End Function

优化一下上述新增工作薄,可以运用下述更简洁的方法。
该方法可以避免因新增工作薄不是sheet1开始的。

Function AssistNewAddSh(Filename, Name1, Name2)
'老文件新建工作薄,用于存放整理出来的数据 _ 文件名_工作薄1_工作薄2

        Windows(Filename).Activate
        ActiveSheet.Name = Name1
        Sheets.Add After:=ActiveSheet
        ActiveSheet.Name = Name2
        
End Function

2.4 删除工作薄

根据特定需求删除工作薄

Function AssistOldDelSh(Filename, T)
'老文件删除工作薄 _ 文件名_是否只取放电(1为是)_是否增加1C充放电(1为是)

    Windows(Filename).Activate
    Application.DisplayAlerts = False
    
    If T = 0 Then
        Sheets("充电特性数值").Select
        ActiveWindow.SelectedSheets.Delete
        Sheets("容量倍率展示").Select
        ActiveWindow.SelectedSheets.Delete
        Sheets("放电特性数值").Select
        ActiveWindow.SelectedSheets.Delete
    Else
        Sheets("放电特性数值").Select
        ActiveWindow.SelectedSheets.Delete
        Sheets("容量倍率展示").Select
        ActiveWindow.SelectedSheets.Delete
    End If
    
    ActiveWorkbook.Save
End Function

自定义删除工作薄

Function AssistOldDelSh(Filename, Name1)
	'为了避免出现提示信息
    Windows(Filename).Activate
    Application.DisplayAlerts = False
    '开始删除工作薄
    Sheets(Name1).Select
    ActiveWindow.SelectedSheets.Delete
    '文件保存一下
    ActiveWorkbook.Save
End Function

参考地址:https://docs.microsoft.com/zh-cn/office/client-developer/excel/excel-home?redirectedfrom=MSDN
该代码仅供学习,如商业转载请联系本人,非商业转载请注明出处

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python可以使用Win32 COM模块来与VBA进行交互,通过这种方式可以实现Python封装VBA的类模块。 以下是一个简单的Python代码示例,演示了如何使用Win32 COM模块来创建并使用VBA的类模块: ```python import win32com.client as win32 # 创建Excel应用程序对象 excel = win32.gencache.EnsureDispatch('Excel.Application') # 打开Excel工作簿 workbook = excel.Workbooks.Open(r'C:\path\to\your\workbook.xlsx') # 获取VBA项目 vba_project = workbook.VBProject # 获取VBA模块 module = vba_project.VBComponents.Add(1) # 类模块的类型为1 module.Name = 'MyClass' # 模块名称为MyClass # 在类模块中添加代码 module.CodeModule.AddFromString(''' Private m_name As String Public Property Get Name() As String Name = m_name End Property Public Property Let Name(value As String) m_name = value End Property ''') # 获取VBA类 my_class = module.Designer.Controls.Add('vb.CommandButton.1') # 设置类的名称和初始值 my_class.Name = 'MyClassInstance' my_class.Object.Caption = 'Click me!' my_class.Object.Value = win32.Dispatch(module.Name) # 在Excel中显示类 workbook.Windows(1).Visible = True # 关闭Excel应用程序 excel.Quit() ``` 在上面的代码中,我们使用Win32 COM模块创建了一个Excel应用程序对象,并打开了一个工作簿。然后,我们获取了VBA项目和VBA模块,并向模块中添加了代码。接下来,我们使用模块的Designer属性添加了一个类,并设置了类的名称和初始值。最后,我们在Excel中显示了类,并关闭Excel应用程序。 这只是一个简单的示例,你可以根据自己的需求修改代码。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木易:_/

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值