VBA代码:格式化复制数据到data sheet
Sub CopyData()
Dim wb1 As Workbook, wb2 As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim filePath As String, fileName As String
Set wb1 = ThisWorkbook '当前工作簿
'构建完整的文件路径
filePath = "H:\Engineering\PT-BE-ETS-HZ_Act\EIS_Report\Pronovia\"
fileName = "Runing_Project_Status_560A_*" & Format(Date, "yyyymmdd") & ".xlsx"
'搜索目标文件
On Error Resume Next
Set wb2 = Workbooks.Open(filePath & fileName)
On Error GoTo 0
If wb2 Is Nothing Then
MsgBox "找不到目标文件"
Exit Sub
End If
Set ws1 = wb1.Sheets("data") '当前工作簿的data sheet
Set ws2 = wb2.Sheets("data") '目标工作簿的data sheet
'清空当前工作簿的data sheet内容和格式
ws1.Cells.Clear
ws1.Cells.ClearFormats
'复制数据和格式
ws2.UsedRange.Copy
ws1.Range("A1").PasteSpecial xlPasteAllUsingSourceTheme
Application.CutCopyMode = False '清除剪切板的内容
wb2.Close False '关闭目标工作簿,不保存
MsgBox "data sheet已更新"
End Sub
代码功能说明:
- 声明变量: 声明工作簿、工作表和文件路径相关变量。
- 获取当前工作簿: 使用
ThisWorkbook获取当前工作簿对象。 - 构建文件路径: 构建目标文件完整路径,包含文件夹路径和文件名。文件名使用
Format(Date, "yyyymmdd")获取当前日期,并使用通配符*匹配文件名中的日期部分。 - 搜索目标文件: 使用
Workbooks.Open方法打开目标文件,并处理可能出现的错误。 - 判断文件是否存在: 如果
wb2为Nothing,则表示找不到目标文件,弹出提示信息并退出子程序。 - 获取工作表对象: 获取当前工作簿和目标工作簿的
data工作表对象。 - 清空目标工作表内容和格式: 使用
Cells.Clear和Cells.ClearFormats方法清除目标工作表的全部内容和格式。 - 复制数据和格式: 使用
UsedRange.Copy方法复制目标工作表中的所有数据和格式。使用PasteSpecial xlPasteAllUsingSourceTheme方法将数据和格式粘贴到当前工作簿的data工作表中。 - 清除剪切板: 使用
Application.CutCopyMode = False清除剪切板内容。 - 关闭目标工作簿: 使用
wb2.Close False关闭目标工作簿,不保存更改。 - 提示信息: 使用
MsgBox弹出提示信息,告知用户data工作表已更新。
代码使用方法:
- 将代码复制到 Excel VBA 编辑器中。
- 将代码中的文件路径修改为实际目标文件的路径。
- 运行代码,即可将目标文件中的数据和格式复制到当前工作簿的
data工作表中。
注意:
- 代码中的文件路径需要根据实际情况进行修改。
- 代码会清空当前工作簿的
data工作表的内容和格式,请谨慎使用。 - 如果目标文件中存在其他工作表,代码只复制
data工作表中的内容和格式。 - 为了避免数据丢失,建议在运行代码之前备份当前工作簿。
原文地址: https://www.cveoy.top/t/topic/o1ec 著作权归作者所有。请勿转载和采集!