2014-08-27 70 views
2

我有兩個excel文件。其中之一包含一個宏。另一個是共享工作簿。我已經編寫了一些代碼。它打開共享的woorkbook文件,並選擇了指定選項卡上的所有數據。如何編寫宏以打開Excel文件並將數據粘貼到包含宏的文件中?

唯一的問題是我不確定如何編寫代碼,將自動將此數據粘貼到文件與宏?

Sub ImportData_Click() 

' open the source workbook and select the source sheet 
Workbooks.Open Filename:="Test.xlsm" 
Sheets("Make").Select 

' copy the source range 
Sheets("Make").Range("A1:Z630").Select 
Selection.Copy 

' select current workbook and paste the values starting at U4 
Sheets("Make").Select 
Sheets("Make").Range("A1:Z630").Select 
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ 
False, Transpose:=False 

' close the source workbook 
Windows("Test.xlsm").Activate 
ActiveWorkbook.Close 

End Sub 

回答

2
ThisWorkbook.Activate 

應該做的伎倆。 通過您的宏判斷,將其粘貼到「'選擇當前工作簿並粘貼U4開始的值」評論後面。

+0

非常感謝您!有用 ! – 2014-08-27 12:08:55

2

你要記住你來自哪裏:

Sub ImportData_Click() 

    Dim rDest As Range 
    Set rDest = ThisWorkbook.Sheets("Make").Range("A1:Z360") 

    ' open the source workbook and select the source sheet 
    Workbooks.Open Filename:="C:\TestFolder\Test.xlsm" 
    Sheets("Make").Select 

    ' copy the source range 
    Sheets("Make").Range("A1:Z630").Select 
    Selection.Copy 

    rDest.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ 
     False, Transpose:=False 

    ActiveWorkbook.Close 

End Sub 
-1
Private Sub CommandButton1_Click() 
    Dim mode As String 
Dim RecordId As Integer 
Dim sourcewb As Workbook 
Dim targetwb As Workbook 
Dim SourceRowCount As Long 
Dim TargetRowCount As Long 
Dim SrceFile As String 
Dim TrgtFile As String 
Dim TitleId As Integer 
Dim TestPassCount As Integer 
Dim TestFailCount As Integer 
TitleId = 4 
'TestPassCount = 0 
'TestFailCount = 0 

'Retrieve number of records in the TestData SpreadSheet 
Dim TestDataRowCount As Integer 
TestDataRowCount = Worksheets("TestData").UsedRange.Rows.Count 

If (TestDataRowCount <= 2) Then 
    MsgBox "No records to validate.Please provide test data in Test Data SpreadSheet" 
Else 
    For RecordId = 3 To TestDataRowCount 
    RefreshResultSheet 
    'Source File row count 
    SrceFile = Worksheets("TestData").Range("D" & RecordId).Value 
    Set sourcewb = Workbooks.Open(SrceFile) 
    With sourcewb.Worksheets(1) 
     SourceRowCount = .Cells(.Rows.Count, "A").End(xlUp).Row 
     sourcewb.Close 
    End With 

    'Target File row count 
    TrgtFile = Worksheets("TestData").Range("E" & RecordId).Value 
    Set targetwb = Workbooks.Open(TrgtFile) 
    With targetwb.Worksheets(1) 
     TargetRowCount = .Cells(.Rows.Count, "A").End(xlUp).Row 
     targetwb.Close 
    End With 

    ' Set Result Test data value 
    TitleId = TitleId + 3 
    Worksheets("Result").Range("A" & TitleId).Value = Worksheets("TestData").Range("A" & RecordId).Value 

    'Compare Source and Target Row count 
    Resultid = TitleId + 1 
    Worksheets("Result").Range("A" & Resultid).Value = "Source and Target record Count" 
    If (SourceRowCount = TargetRowCount) Then 
     Worksheets("Result").Range("B" & Resultid).Value = "Passed" 
     TestPassCount = TestPassCount + 1 
    Else 
     Worksheets("Result").Range("B" & Resultid).Value = "Failed" 
     TestFailCount = TestFailCount + 1 
    End If 
    Next RecordId 
End If 
UpdateTestExecData TestPassCount, TestFailCount 
End Sub 

Sub RefreshResultSheet() 
    Worksheets("Result").Activate 
    Worksheets("Result").Range("B1:B4").Select 
    Selection.ClearContents 
    Worksheets("Result").Range("D1:D4").Select 
    Selection.ClearContents 
    Worksheets("Result").Range("B1").Value = Worksheets("Instructions").Range("D3").Value 
    Worksheets("Result").Range("B2").Value = Worksheets("Instructions").Range("D4").Value 
    Worksheets("Result").Range("B3").Value = Worksheets("Instructions").Range("D6").Value 
    Worksheets("Result").Range("B4").Value = Worksheets("Instructions").Range("D5").Value 
End Sub 

Sub UpdateTestExecData(TestPassCount As Integer, TestFailCount As Integer) 
    Worksheets("Result").Range("D1").Value = TestPassCount + TestFailCount 
    Worksheets("Result").Range("D2").Value = TestPassCount 
    Worksheets("Result").Range("D3").Value = TestFailCount 
    Worksheets("Result").Range("D4").Value = ((TestPassCount + TestFailCount)/TestPassCount) 
End Sub 
+1

對於一個非常具體的問題,這是一個非常*冗長的答案。對於任何未來陷入困境的人來說,將其分解成邏輯步驟或提供更通用的解決方案會更有幫助。 – 2016-05-17 11:10:56

相關問題