达永编程网

程序员技术分享与交流平台

Excel VBA 每天一段代码:新建文件夹、工作簿;跨工作簿复制工作表

大家好,我是捌贰春秋VBA。在平常工作中,我们要备份工作表部分内容,需保存到另外一个工作簿。

今天给大家带来一段实用代码,功能如下:

1、新建文件夹:如改文件路径下没有“销售单备份”文件夹,则新建;已存在,则不新建。

2、新建工作簿:遍历“销售单备份”文件夹,如2024年03月工作簿(举例)不存在,则新建;已存在,则不新建。

3、复制粘贴指定单元格内容:若2024年03月工作簿(举例)不存在,则新建工作簿之后,将内容粘贴到第一个工作表;若2024年03月工作簿(举例)已存在,则将内容粘贴到改工作簿最后一个工作表。

'/// 功能:将销售单按日期备份到另外工作簿,并清空销售单;每个月一张工作簿

Private Sub CommandButton3_Click()

On Error Resume Next

If MsgBox("是否导出为文件?" & vbCrLf & vbCrLf & "本页销售单将被清除,请确认已处理完毕!", vbYesNo) = vbNo Then Exit Sub

Dim ws As Worksheet

Dim rng As Range

Dim newWorkbook As Workbook

Dim savePath As String

Dim folderPath As String, fldr As String, fileName As String, wsName As String

Dim workbookExists As Boolean, wb As Workbook

'判断文件夹”销售单备份“是否存在,不存在则新建

folderPath = ThisWorkbook.Path & "\销售单备份"

fldr = Dir(folderPath, vbDirectory)

If fldr = "" Then

MkDir folderPath

End If

'工作簿名称:2024年3月 工作簿名称:18日

Dim x As String, y As String, z As String

x = CStr(Format([G3].Value, "yyyy"))

y = CStr(Format([G3].Value, "mm"))

z = CStr(Format([G3].Value, "dd"))

'文件名:2024年3月

fileName = x & "年" & y & "月" & ".xlsx"

'新表名称:18日

wsName = z & "日"

' 文件完整路径

savePath = folderPath & "\" & fileName

' 设置引用的工作表和范围

Set ws = ThisWorkbook.Sheets("销售单") ' 工作表名

Set rng = ws.UsedRange ' 要保存的单元格区域

' 使用Dir函数检查工作簿是否存在

If Dir(savePath) <> "" Then '工作簿存在则新增工作表

workbookExists = True

Set wb = Workbooks.Open(savePath)

' 添加新工作表

Set ws = wb.Sheets.Add(After:=wb.Sheets(wb.Sheets.Count))

ws.Name = wsName ' 新建工作表名称

' 复制指定范围的内容到新工作簿的第一个工作表

rng.Copy Destination:=wb.Sheets(ws.Name).Range("A1")

' 保存工作簿

wb.Save

' 关闭新工作簿

wb.Close SaveChanges:=False

Else

workbookExists = False

' 创建新的工作簿

Set wb = Workbooks.Add

' 复制指定范围的内容到新工作簿的第一个工作表

rng.Copy Destination:=wb.Sheets(1).Range("A1")

wb.Sheets(1).Name = wsName

' 保存新工作簿

wb.SaveAs fileName:=savePath

' 关闭新工作簿

wb.Close SaveChanges:=False

End If

' 清空销售单,保存当前文件

ws.UsedRange.Clear

ThisWorkbook.Save

End Sub

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言