2014-05-16 99 views
0

我想将一个excel文件中的值复制到另一个excel文件,但是在我的项目的后期阶段,我可能需要交叉检查该值,然后将其粘贴到新的excel文件。所以我不想一次复印整张纸。我想按值复制一个值。将单元格的值从一个excel复制到另一个excel

我能够打开并切换到Excel文件,但我无法复制和粘贴值。 以下是我试过的代码 -

Private Sub CommandButton1_Click() 
Dim x As Long 
Dim NumRows As Long 
Set fromwb = Workbooks.Open("G:\Excel\From.xlsx") 
Set towb = Workbooks.Open("G:\Excel\To.xlsx") 
fromwb.Activate 
NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count 
ReDim a(1 To NumRows) 

For x = 1 To NumRows 
    fromwb.Activate 
    a(x) = Cells(x, 1).Value 

    towb.Activate 
    Cells(x, 1).Value = a(x) 
Next x 

End Sub 

感谢您的期待。

回答

0

下面尝试一下代码宏代码。我希望评论非常清楚!

Option Explicit 
Private Sub CommandButton1_Click() 

Dim SourceBook As Workbook, DestBook As Workbook 
Dim SourceSheet As Worksheet, DestSheet As Worksheet 
Dim Index As Long, NumRows As Long 
Dim ValidCheck As Boolean 

'set references up-front 
Set SourceBook = Workbooks.Open("G:\Excel\From.xlsx") 
Set SourceSheet = SourceBook.ActiveSheet 
With SourceSheet 
    NumRows = .Range("A", .Rows.Count).End(xlUp).Row '<~ last row in col A 
End With 
Set DestBook = Workbooks.Open("G:\Excel\To.xlsx") 
Set DestSheet = DestBook.ActiveSheet 

'loop through col A and write out values to destination 
For Index = 1 To NumRows 

    '... 
    'do your value validation 
    'in this space using ValidCheck 
    '... 

    If ValidCheck Then '<~ if true write to Dest 
     DestSheet.Cells(Index, 1) = SourceSheet.Cells(Index, 1) 
    End If '<~ if not, do not write to Dest 

Next Index 

End Sub 
+0

上面用到的用于确定迭代行数的方法经过了很好的审查,并由S.O.的VBA向导推荐。我保留这个帖子的书签,以防我需要快速审查:http://stackoverflow.com/questions/11169445/error-finding-last-used-cell-in-vba –

0

你只需要指定单元格等于单元格,不需要循环任何东西。

Workbooks("To.xlsx").Sheets("ToSheetNameHere").Range("rangehere").Value = Workbooks("From.xlsx").Sheets("FromSheetNameHere").Range("rangehere").Value 

请记住,如果你有工作簿中的(),他们将.XLSM,而不是原来的.xlsx

相关问题