2016-06-13 69 views
0

这对您来说可能太简单了,但我是vba的新手。我有以下代码;当我的主文件打开时它会打开多个文件。复制并粘贴某一行的特定值

Dim StrFile As String 
Dim WB As Workbook 
    Dim InputFilePath As String 
InputFilePath = "Z:\1000_Entwicklung\05_PROJECT\0558000_CFT \055800L_CFT_Projektleitung\99_Arbeitsordner PL\Tanverdi, Yigit\SAA\" 
StrFile = Dir(InputFilePath & "*") 

Do While Len(StrFile) > 0 
    Set WB = Workbooks.Open(InputFilePath & StrFile) 
    WB.Activate 
     sheets("data").Select 
     sheets("data").Move After:=Workbooks("makrotochange.xlsm").sheets(23) 
     StrFile = Dir() 
Loop 

    Dim copiedSheet As Worksheet 
    Dim masterSheet As Worksheet 

Set copiedSheet = Worksheets("data") 
Set masterSheet= Worksheets("masterSheet") 

我想复制单元格列A; B; C; D从数据表中的每一行开始,然后将其粘贴到主表第一个空行,到列D; C;一个; B(单元格A将粘贴到masterSheet中的单元格D,B到C,C到C和D到B等)。

行数量是动态的,所以我希望能够复制copySheet包含的任何行的A; B; C; D并将其粘贴到masterSheets D; C; A; B单元格的第一个空行。

有谁知道我该怎么做?

编辑: 我想有一个copiedSheet2应该操作相同的东西,但它应该粘贴目的地(masterSheet)到下一个空行?

回答

1

这应该是你在追求什么。这是将数据从一个位置复制到另一个位置而不使用任何.Select的最干净的方法

copiedSheet.Range("A:A").Copy Destination:= masterSheet.Range("D:D") 
copiedSheet.Range("B:B").Copy Destination:= masterSheet.Range("C:C") 
copiedSheet.Range("C:C").Copy Destination:= masterSheet.Range("A:A") 
copiedSheet.Range("D:D").Copy Destination:= masterSheet.Range("B:B") 
+0

非常感谢!我还有一个问题,如果我想拥有一个应该操作相同内容的copiedSheet2,但它应该将目标(masterSheet)粘贴到下一个空行? –

+0

@BartuSaner如果答案是正确的,那么请[接受答案](http://stackoverflow.com/tour),并(可能)提高答案。如果你有新的问题,那么你应该发布一个新的问题。如果你认为这样的参考是有价值的,你可以(当然)在你的新问题中链接到这篇文章。顺便说一句:*(+ 1)*从我这边发帖。 – Ralph