vba实现覆盖导入以下是VBA代码示例用于覆盖导入数据:Sub ImportDataDim wb As WorkbookDim ws As WorksheetDim rng As RangeSet wb = WorkbooksOpenCDataxlsx 打开数据文件Set ws = ThisWorkbookSheetsSheet1 将数据导入到Sheet1Set rng = wsRangeA1 从
,此示例的代码如下:
- 首先定义变量和输入关键字:
Sub ImportData() Dim wbSource As Workbook Dim wsTarget As Worksheet Dim keyword As String Dim lastRow As Long Dim i As Long
keyword = InputBox("请输入要覆盖的关键字:")
- 打开源工作簿和目标工作簿,并检查目标工作簿是否有指定列标题:
Set wbSource = Workbooks.Open("C:\SourceWorkbook.xlsx") Set wsTarget = ThisWorkbook.Sheets("TargetSheet")
If wsTarget.Range("A1").Value = "指定列标题" Then
- 如果目标工作簿有指定列标题,则遍历目标工作簿中的行并删除包含关键字的行:
lastRow = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row For i = lastRow To 1 Step -1 If InStr(1, wsTarget.Cells(i, "A").Value, keyword) > 0 Then wsTarget.Rows(i).Delete End If Next i
- 然后遍历源工作簿中的行,并将包含关键字的行复制到目标工作簿的末尾:
lastRow = wbSource.Sheets("SourceSheet").Cells(wbSource.Sheets("SourceSheet").Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow If InStr(1, wbSource.Sheets("SourceSheet").Cells(i, "A").Value, keyword) > 0 Then wsTarget.Rows(wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row + 1).Value = wbSource.Sheets("SourceSheet").Rows(i).Value End If Next i
- 如果目标工作簿没有指定列标题,则直接将源工作簿中的数据复制到目标工作簿的末尾:
Else lastRow = wbSource.Sheets("SourceSheet").Cells(wbSource.Sheets("SourceSheet").Rows.Count, "A").End(xlUp).Row wsTarget.Rows(wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row + 1).Resize(lastRow - 1, wbSource.Sheets("SourceSheet").Columns.Count).Value = wbSource.Sheets("SourceSheet").Range("A2").Resize(lastRow - 1, wbSource.Sheets("SourceSheet").Columns.Count).Value End If
- 最后关闭源工作簿:
wbSource.Close False End Sub
原文地址: https://www.cveoy.top/t/topic/bRHN 著作权归作者所有。请勿转载和采集!