2015-10-31 110 views
0

我有兩個獨立的宏叫做ImportData和ExportData。ExportData將數據發送到名爲Temp的工作表。它稍後會發送到.csv文件。所有這一切工作正常。 例如:Excel VBA - 結合導入和導出宏

Sheets("Orders").Range("A1:C6").Copy 
    Sheets("Temp").Range("A55:C60").PasteSpecial xlPasteValues 

IMPORTDATA確實ExportData相反: 例如:

Sheets("Temp").Range("A55:C60").Copy 
    Sheets("Orders").Range("A1:C6").PasteSpecial xlPasteValues 

有沒有辦法用一個宏來做到這一點,而不是有兩個是基本相同,不同之處在於複製和粘貼觸發翻轉?

每個宏都有數百行與上面類似的複製和粘貼,而不僅僅是2行。

回答

0
Sub PasteFromTo(FromRange As Excel.Range, ToRange As Excel.Range) 
FromRange.Copy 
ToRange.PasteSpecial xlPasteValues 
End Sub 

這樣稱呼它:

Sub test() 
PasteFromTo Sheets("Temp").Range("A55:C60"), Sheets("Orders").Range("A1:C6") 
End Sub 
1

如果創建「從」的表和「到」工作表上的地址(可以隱藏的,如果必要的話),那麼你可以使用這樣的事情和它會更易於管理:

Sub Tester() 

    CopyIt  ' defaults to Import 
    CopyIt False ' specify Export 

End Sub 

Sub CopyIt(Optional DoImport As Boolean = True) 
    Dim rw As Range, r1 As Range, r2 As Range 

    For Each rw In Sheet1.Range("A1:B50").Rows 
     Set r1 = Sheets("Temp").Range(rw(1).Value) 
     Set r2 = Sheets("Orders").Range(rw(2).Value) 
    Next rw 

    If DoImport Then 
     r2.Value = r1.Value 
    Else 
     r1.Value = r2.Value 
    End If 

End Sub