将数据从一个工作簿复制到另一个工作簿的代码有什么问题?

时间:2013-10-18 15:01:05

标签: excel vba excel-vba

我想从一个工作簿中复制一列数据(我想至少复制单元格值),然后将复制的数据粘贴/更新到另一个工作簿。首先,我在源工作簿中创建了一个命令按钮,因此每次单击该按钮时,所有数据都将从另一个文件更新自身。

这是我的代码。它一次只能复制一个单元格,而不是复制整列。

Private Sub CommandButton1_Click()
Dim itemCapRet As String
Dim Testing1 As Workbook

Worksheets("Testing2").Select
itemCapRet = Range("I1")

Set myData = Workbooks.Open("C:\Documents\Testings\Testing2.xlsx")
Worksheets("sheet1").Select
Worksheets("sheet1").Range("A1").Select
RowCount = Worksheets("sheet1").Range("A1").CurrentRegion.Rows.Count
With Worksheets("Sheet1").Range("A1")
.Offset(RowCount, 0) = itemCapRet
.Offset(RowCount, 1) = itemPrice
End With
Testing1.Save
End Sub

3 个答案:

答案 0 :(得分:1)

此代码会将活动工作簿的Testing2工作表,列I设置为位于A <工作簿中工作表Sheet1上的列C:\Documents\Testings\Testing2.xlsx的工作表/ p>

Sub CopyColumn()
Dim WB1 As Workbook
Dim WB2 As Workbook

Set WB1 = ActiveWorkbook
Set WB2 = Workbooks.Open("C:\Documents\Testings\Testing2.xlsx")

WB1.Sheets("Testing2").Columns("I").Value = WB2.Sheets("sheet1").Columns("A").Value

WB2.Close
End Sub

更新 基于评论的代码:

Private Sub CommandButton1_Click()
Dim wb1 As Workbook
Dim wb2 As Workbook
Set wb1 = ActiveWorkbook
Set wb2 = Workbooks.Open("C:\Users\zyu\Documents\Processed Data\Allagash\16 cells\Copy of TXM10421_24M_capacity_102113.xls")

wb1.Sheets("Sheet1").Columns("S").Value = wb2.Sheets("16").Columns("N").Value

End Sub

答案 1 :(得分:0)

有很多问题。我建议从小开始,然后建立你想要的东西。

您没有正确引用工作簿。你定义myData&amp; Testing1但从不使用它。

另外,你在一行上进行行计数。

itemPrice永远不会设置。

保存Testing1工作簿,但不要更改任何内容。

仍有很多逻辑问题,但这会让你开始。不确定你的复制工作簿是什么,也不确定。

Private Sub CommandButton1_Click()
    Dim itemCapRet As String
    Dim wbk_Testing1 As Workbook
    Dim wbk_Current As Workbook
    Set wbk_Current = ActiveWorkbook

    Set wbk_Testing1 = Workbooks.Open("C:\Documents\Testings\Testing2.xlsx")
    wbk_Testing1.Worksheets(1).Columns("A:A").Copy

    wbk_Current.Worksheets("Testing2").Activate
    Range("A1").Select
    ActiveSheet.Paste

    wbk_Testing1.Save
End Sub

答案 2 :(得分:0)

除了Testing2中单元格J1的内容外,您的宏不会复制任何数据。你想要复制什么范围?

如果您要复制并粘贴整个列,请将itemCapRet = Range("I1")更改为itemCapRet = Range("I:I")以复制所有列J,但正如Portland Runner刚刚回答的那样,这里定义了很多没有被使用的东西。