excel - 将单元格范围从一个工作簿复制到另一个工作簿

标签 excel vba

如何将一系列单元格从一个工作簿复制到另一个工作簿?下面的代码不起作用。我认为选择单元格范围的方式有问题:sht1.Range("A1:D1").Select

Sub ImportData()

Dim wkb1 As Workbook
Dim sht1 As Worksheet
Dim wkb2 As Workbook
Dim sht2 As Worksheet

Application.ScreenUpdating = False

Set wkb1 = ThisWorkbook
Set wkb2 = Workbooks.Open("C:\Users\Temp\Desktop\MyExcelSheet.xlsm")
Set sht1 = wkb1.Sheets("Data")
Set sht2 = wkb2.Sheets("Summary")

'Function to clear the existing data. Doesn't work.
sht1.Range("A1:D1").Select
sht1.Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents

' Copies data from the "Summary" sheet.
sht2.Range("O6:P102").Copy
sht2.Range("O6").Select
sht2.Range(Selection, Selection.End(xlToRight)).Select 
sht2.Range(Selection, Selection.End(xlDown)).Select 
Selection.Copy ' Copies all of the highlighted cells.

sht1.Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False 
wkb2.Close True 
    
Application.ScreenUpdating = True
MsgBox "Complete"
End Sub

最佳答案

代替:

sht1.Range("A1:D1").Select
sht1.Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
sht1.Range("A1:D" & Range("D1").End(xlDown).Row).Clear
除非您特别想手动突出显示单元格然后运行宏,否则此解决方案有效。
此替换代码现在将突出显示“A1:D1”之间的每个单元格,但是 XlDown 仅应用于“D”列。

关于excel - 将单元格范围从一个工作簿复制到另一个工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72663642/

相关文章:

vba - 按行颜色排序不一致

excel - VBA 对同一行中的单元格使用求和公式。行号将随着每个循环而改变

excel - 如何搜索子字符串,并返回其右侧 10 个字符的所有值

sql-server - 将范围从 Excel 复制到 SQL 而不使用 For 循环?

excel - VBA 使用最后一行范围将数据从一个工作簿复制到另一个工作簿

excel - 无法通过 getOpenFilename 打开 excel 文件

sql - 传递给 ADODB 的查询长度是否有限制?

vba - 这个 Visual Basic 代码有什么作用?微软 word 宏

excel - 如何创建 ActiveX 控件 CommandButton 并将其设置为变量 Excel VBA

javascript - Angularjs 数字过滤器无法与 ui 网格正常工作