通过vba代码导入数据以插入更高的1行

时间:2014-06-13 09:27:34

标签: excel vba excel-vba

我希望我的代码可以将其他工作簿中的数据导入到我当前使用的工作簿中特定工作表的底部,因为表格底部的总计会更高一行。如何改变我的代码来实现这个目标?

Dim wbk1 As Workbook, wbk2 As Workbook
Dim ws As Worksheet, ws1 As Worksheet, ws2 As Worksheet
Dim FileToOpen As String

On Error Resume Next
FileToOpen = Application.GetOpenFilename _
(Title:="Choose Excel File to Import", _
FileFilter:="Excel Files *.xl?? (*.xl??),")
If FileToOpen = "False" Then
MsgBox "No File Specified.", vbExclamation, "ERROR"
Exit Sub
Else
Set wbk1 = ThisWorkbook: Set ws1 = wbk1.Sheets("BOM-DB")
Set wbk2 = Workbooks.Open(FileName:=FileToOpen)
DoEvents
Set ws2 = wbk2.Sheets(1)

 With ws2
    .Range("A2", .Range("AA" & .Rows.Count).End(xlUp)).Copy
    ws1.Range("A" & ws1.Range("A:A").Find("*", ws1.Range("A1") _
        , , , , xlPrevious).row).Offset(1, 0).PasteSpecial xlPasteValues
End With
End If
wbk2.Close False
On Error GoTo 0 

2 个答案:

答案 0 :(得分:0)

From Link "向下移动一个单元格(从B2到B3):范围(" B2")。偏移(1,0)。选择"

通过更改代码并删除.Offset(1, 0),因为这是向下移动1行。

从代码顶部删除On Error Resume Next并且只有错误陷阱您真正要检查的内容也是一种很好的编码习惯。正如这说的,如果你发现任何错误忽略它,直到你在On Error GoTo 0停止错误捕获

答案 1 :(得分:0)

您的代码看起来很熟悉。 :)
无论如何,您可以在下面尝试,但这将完全按原样复制数据,而不是仅作为值。

ws1.Range("A" & ws1.Range("A:A").Find("*", ws1.Range("A1") _
    , , , , xlPrevious).row).Insert xlDown