批量将工作表转换为独立的工作簿,并且工作簿不保留公式,只保留值
时间: 2023-09-10 12:05:51 浏览: 53
以下是一种可能的解决方案:
1. 打开包含工作表的工作簿。
2. 对于每个要转换的工作表,右键单击标签并选择“将工作表复制到新工作簿”。
3. 保存新的工作簿,并关闭原始工作簿。
4. 打开新的工作簿。
5. 在新的工作簿中,按下键盘上的“Alt + F11”打开Visual Basic Editor。
6. 在Visual Basic Editor中,选择“插入”菜单,然后选择“模块”。
7. 在模块中,输入以下代码:
```
Sub ConvertToValues()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Cells.Copy
ws.Cells.PasteSpecial xlPasteValues
Next ws
Application.CutCopyMode = False
End Sub
```
8. 按下键盘上的“F5”运行代码。
9. 关闭Visual Basic Editor并保存工作簿。
此时,您的所有工作表都已转换为独立的工作簿,并且它们都只保留了值而不是公式。
相关问题
修改上述代码,拆分生成的工作簿不保留公式,只保留值,并且新生成的工作表自动保存
以下是修改后的代码:
```python
import openpyxl
# 读取原始工作簿
wb = openpyxl.load_workbook('example.xlsx')
# 遍历所有工作表
for sheetname in wb.sheetnames:
sheet = wb[sheetname]
new_wb = openpyxl.Workbook()
new_sheet = new_wb.active
new_sheet.title = sheetname
# 遍历当前工作表中的每个单元格
for row in sheet.iter_rows():
new_row = []
for cell in row:
# 如果单元格有公式,将其转换为值
if cell.data_type == 'f':
new_row.append(cell.value)
else:
new_row.append(cell.value)
# 将新行添加到新工作表中
new_sheet.append(new_row)
# 将新工作表保存为新的工作簿
new_wb.save(f'{sheetname}_new.xlsx')
```
在新代码中,我们遍历每个单元格,并检查它们是否具有公式。如果单元格有公式,我们将其转换为值。然后,我们将新行添加到新工作表中,并将新工作表保存为新的工作簿,文件名为原始工作表名称后加上"_new"。这样,我们就能够生成新的工作簿,其中只包含值而不是公式,并且新的工作表会自动保存。
VBA将一张工作簿内若干工作表另存为独立的工作簿
可以使用以下VBA代码将一张工作簿内的若干工作表另存为独立的工作簿:
```
Sub SaveWorksheetsAsNewWorkbooks()
Dim ws As Worksheet
Dim wb As Workbook
Dim newWB As Workbook
Dim savePath As String
'设置保存路径
savePath = "C:\Users\Username\Desktop\"
'禁止屏幕刷新
Application.ScreenUpdating = False
'循环遍历所有工作表
For Each ws In ThisWorkbook.Worksheets
'创建新工作簿
Set newWB = Workbooks.Add
'复制当前工作表到新工作簿
ws.Copy Before:=newWB.Sheets(1)
'保存新工作簿
newWB.SaveAs savePath & ws.Name & ".xlsx"
'关闭新工作簿
newWB.Close
'释放对象
Set newWB = Nothing
Next
'恢复屏幕刷新并显示提示信息
Application.ScreenUpdating = True
MsgBox "工作表已保存为独立的工作簿", vbInformation
End Sub
```
在代码中,需要设置保存路径(即savePath变量),然后使用循环遍历所有工作表,并创建新工作簿、复制当前工作表到新工作簿、保存新工作簿、关闭新工作簿以及释放对象等步骤。最后,恢复屏幕刷新并显示提示信息。