写一个EXCEL宏,查找工作表中sheet名字叫中兴通讯成品运输提货单(空运)的sheet,复制并放到新的工作表文件里的第一个sheet,并将新工作表所有sheet的公式内容转换成非公式,提取新工作簿B3到F3单元格里的信息作为后缀,新的工作表文件格式用 '中兴通讯成品运输提货单(空运)-'做前缀,提取到的信息做后缀命名,并将新的工作表放到桌面
时间: 2024-03-16 13:42:12 浏览: 49
python 将目录中所有excel合并到一个excel中 openpyxl 复制sheet工作表到另一个工作簿
以下是使用 VBA 语言编写的 EXCEL 宏,可实现你所需的功能:
```VBA
Sub CopySheetAndConvertFormula()
' 定义变量
Dim wbNew As Workbook
Dim wsCopy As Worksheet
Dim wsPaste As Worksheet
Dim ws As Worksheet
Dim newName As String
Dim suffix As String
' 查找要复制的工作表
For Each wsCopy In ActiveWorkbook.Worksheets
If wsCopy.Name = "中兴通讯成品运输提货单(空运)" Then
' 生成新工作表
Set wbNew = Workbooks.Add
Set wsPaste = wbNew.Sheets(1)
' 复制工作表
wsCopy.Copy Before:=wsPaste
' 转换公式
For Each ws In wbNew.Worksheets
ws.Cells.Copy
ws.Cells.PasteSpecial xlPasteValues
Next ws
' 获取后缀
suffix = Replace(wsPaste.Range("B3:F3").Value, "/", "-")
' 生成新名称
newName = "中兴通讯成品运输提货单(空运)-" & suffix
' 重命名新工作表
wsPaste.Name = newName
' 保存新工作表
wbNew.SaveAs "C:\Users\" & Environ("USERNAME") & "\Desktop\" & newName & ".xlsx"
' 关闭新工作表
wbNew.Close False
' 结束
Exit Sub
End If
Next wsCopy
' 如果未找到对应工作表,弹出提示框
MsgBox "找不到工作表 '中兴通讯成品运输提货单(空运)'"
End Sub
```
使用方法:
1. 打开 EXCEL 文件,按下 Alt + F11 进入 VBA 编辑器;
2. 在左侧的项目资源管理器中右键点击 VBAProject,选择 插入 -> 模块;
3. 将以上代码复制粘贴到模块中;
4. 按下 F5 或在菜单栏中点击 运行 -> 运行子过程,执行宏。
注意事项:
1. 由于本宏会在桌面生成新的工作表文件,所以请确保你的电脑中存在桌面,并且你有桌面的写入权限;
2. 如果你的 EXCEL 文件中存在多个工作簿,本宏会将所有工作簿的公式内容转换成非公式,如果不需要,请自行删除相关代码。
阅读全文