2013-09-23 56 views
0

下面的代码从“data.xlsx”excel工作簿运行,并应提示用户打开excel工作簿文件并将数据从“data.xlsx”复制到用户打开的Excel工作簿中。复制和粘贴多个工作簿之间的某些单元格

Sub test() 
    Dim ToSheet As Worksheet 
    Dim FromBook As String 
    Dim FromSheet As Worksheet 
    '-------------------------------------------------------------------- 
    Set ToSheet = ActiveSheet 
    FromBook = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx, All Files (*.*), *.*", 1, "Select Log File ") 
    If FromBook = "False" Then Exit Sub 
    Workbooks.Open FromBook 
    Set FromSheet = ActiveSheet.Worksheets("Sheet1") 
    '-------------------------------------------------------------------- 
    'Copy/Paste Data 
    ToSheet.Activate 
    DoColumnCopy "Apple", "Orange" 
End Sub 
'------------------------------------------------------- 
'I need below code to work between the workbook, currently it 
'only works between the worksheet. 

'Get data from FromColName and copy to ToColName 
Sub DoColumnCopy(FromColName As String, ToColName As String) 

    Dim rng As Range, rngCopy As Range, rng2 As Range 

    Set rng = workbooks(1).Sheets("data").Rows(1).Find(What:=FromColName, LookIn:=xlValues, _ 
            LookAt:=xlWhole) 
    If Not rng Is Nothing Then 

     Set rngCopy = workbooks(1).Sheets("data").Range(rng).End(xlDown) 

     Set rng2 = workbooks(2).Sheets("log").Rows(1).Find(What:=ToColName, LookIn:=xlValues, _ 
            LookAt:=xlWhole) 

     If Not rng2 Is Nothing Then rngCopy.Copy rng2.Offset(1, 0) 

    End If 
End Sub 

我该如何修复代码的这部分workbooks(2).sheets...,所以它知道的用户打开工作簿中的名字吗?或者如果有多个工作簿打开?

我欢迎如果你有更好的方法做到这一点
非常感谢你!

回答

1

您必须声明您的对象为其他工作簿并分配给它。例如(未经测试)

Sub test() 
    Dim thisWb As Workbook, destWb As Workbook 
    Dim ToSheet As Worksheet, FromSheet As Worksheet 
    Dim FromBook As String 

    '~~> Current workbook and the sheet 
    Set thisWb = ThisWorkbook 
    Set ToSheet = thisWb.ActiveSheet 

    FromBook = Application.GetOpenFilename(_ 
    "Excel Files (*.xlsx), *.xlsx, All Files (*.*), *.*", 1, "Select Log File ") 
    If FromBook = "False" Then Exit Sub 

    '~~> This is how you store it in an object and then use it 
    Set destWb = Workbooks.Open(FromBook) 
    Set FromSheet = destWb.Worksheets("Sheet1") 

    ' 
    '~~> Rest of your code 
    ' 
End Sub 
+0

首先,感谢你这么积极主动配合你的专业知识:) 但是对于'子DoColumnCopy'我应该如何去使用'thisWb'&'destWb'? 'thisWb.Sheets(“sheet1”)'不会这样做...... – GimGanDi

+0

什么是“苹果”和“橘子”在这里?某些列的值?他们是从一些细胞中挑选出来的吗? –

+0

Apple&Orange是'DoColumnCopy'的文本字符串,它在A1行中搜索“Apple”,抓取该列中的数据(当前工作簿),并在用户打开的工作簿** sheet1的A1行中搜索“orange” *并粘贴数据。 – GimGanDi

相关问题