这段代码基本没有语法错误,但是其中有一些需要注意的地方:

  1. 在输入关键字时,应该添加一些错误处理,例如判断用户是否取消了输入,或者输入的关键字是否为空。

  2. 在删除目标工作表中的数据时,应该先判断是否存在要删除的数据,否则可能会出现错误。

  3. 在导入数据时,应该判断源工作表中是否存在要导入的数据,否则可能会出现错误。

  4. 在导入数据时,应该指定要导入的列数,否则可能会导致数据错位。

  5. 在导入数据时,应该使用 PasteSpecial 方法,以避免复制格式和样式。

  6. 在关闭源工作簿时,应该指定是否保存,否则可能会出现意外。

下面是修改后的代码:

Sub ImportData() Dim wbSource As Workbook Dim wsTarget As Worksheet Dim keyword As String Dim lastRow As Long Dim i As Long Dim sourceFilePath As String

'选择源文件
sourceFilePath = Application.GetOpenFilename(FileFilter:="Excel Files (*.xlsx), *.xlsx", Title:="选择源文件")
If sourceFilePath = "False" Then Exit Sub '如果没有选择文件则退出

'输入关键字
keyword = InputBox("请输入要覆盖的关键字:")
If keyword = "" Then Exit Sub '如果关键字为空则退出

'打开源文件和目标工作簿
Set wbSource = Workbooks.Open(sourceFilePath)
Set wsTarget = ThisWorkbook.Sheets(1)

'删除目标工作表中的数据
If wsTarget.Range("A1").Value = "指定列标题" Then
    lastRow = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row
    If lastRow > 1 Then
        For i = lastRow To 2 Step -1
            If InStr(1, wsTarget.Cells(i, "A").Value, keyword) > 0 Then
                wsTarget.Rows(i).Delete
            End If
        Next i
    End If
Else
    wsTarget.Cells.ClearContents
End If

'导入数据
lastRow = wbSource.Sheets(1).Cells(wbSource.Sheets(1).Rows.Count, "A").End(xlUp).Row
If lastRow > 1 Then
    wsTarget.Range("A2").Resize(lastRow - 1, wbSource.Sheets(1).Columns.Count).Value = wbSource.Sheets(1).Range("A2").Resize(lastRow - 1, wbSource.Sheets(1).Columns.Count).Value
    wsTarget.Range("A2").Resize(lastRow - 1, wbSource.Sheets(1).Columns.Count).PasteSpecial Paste:=xlPasteValues
End If

'关闭源文件和保存目标工作簿
wbSource.Close False
ThisWorkbook.Save

End Sub

vba实现覆盖导入VBA可以通过以下步骤实现覆盖导入:1 打开目标工作簿和源工作簿。2 在目标工作簿中选择要覆盖的工作表。3 在VBA中使用以下代码将源工作簿中的数据导入到目标工作簿中:Sheets目标工作表名称CellsClearContentsSheets源工作表名称UsedRangeCopySheets目标工作表名称RangeA1PasteSpecial Paste=xlPasteValue

原文地址: https://www.cveoy.top/t/topic/bRNW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录