VBA代码优化:从指定路径复制数据到当前工作簿
这段VBA代码主要功能是从指定路径复制数据到当前工作簿的'data'工作表。
代码中存在以下问题:
- 文件路径和文件名的拼接方式不正确。 在路径和文件名的拼接时,应使用路径分隔符来连接路径和文件名。
- 没有添加错误处理机制。 如果目标文件找不到,代码会抛出错误。
以下是修改后的代码:
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(Dir(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
'复制数据
ws2.Range("A1").UsedRange.Copy
ws1.Range("A1").PasteSpecial xlPasteValues
wb2.Close False '关闭目标工作簿,不保存
MsgBox "data sheet已更新"
End Sub
修改内容:
- 使用
Dir函数搜索目标文件,并使用On Error Resume Next和On Error GoTo 0处理文件找不到的情况。 - 添加判断语句,如果
wb2为Nothing,则提示用户目标文件不存在并退出程序。
修改后的代码更加健壮,能够有效地处理文件找不到的情况,并提高代码的可靠性。
原文地址: https://www.cveoy.top/t/topic/o01T 著作权归作者所有。请勿转载和采集!