2015-03-25 86 views
0

我喜欢将工作簿中的2列表格的表体复制到另一个工作簿中8列表格的前2列。 我写这个代码,但粘贴体到另一个表时我得到的2列重复上柱3和4,5和6以及图7和8复制和粘贴数据从Excel表格与2列到excel表格与8列使用VBA

Dim wbk As Workbook 

Sub overzetten_naar_planning() 

Dim folderPath As String, fileName As String, filePath As String 
Dim LastRow As Variant 
Dim Wb As Workbook 
Set Wb = ThisWorkbook 

' create path containing the planning file 
folderPath = ThisWorkbook.Path & "\" 
fileName = "6s planning 2015.xlsx" 
filePath = folderPath & fileName 

' check if planning is already open in your session. 
If IsWorkBookOpen(filePath) Then 
    Set Wba = Workbooks(fileName) 
Else 
    Set Wba = Workbooks.Open(filePath, UpdateLinks:=0) 
End If 

Wba.Activate 
Set LastRow = ActiveSheet.ListObjects("Planning6S").ListRows.Add 
ThisWorkbook.Activate 
ActiveSheet.ListObjects("WerkplaatsTabel").DataBodyRange.Copy 
LastRow.Range.PasteSpecial xlPasteValues 

End Sub 

Function IsWorkBookOpen(fileName As String) 
Dim ff As Long, ErrNo As Long 

On Error Resume Next 
ff = FreeFile() 
Open fileName For Input Lock Read As #ff 
Close ff 
ErrNo = Err 
On Error GoTo 0 

Select Case ErrNo 
Case 0: IsWorkBookOpen = False 
Case 70: IsWorkBookOpen = True 
Case Else: Error ErrNo 
End Select 
End Function 

回答

0

的原因两列重复是在你的粘贴范围

Wba.Activate Set LastRow = ActiveSheet.ListObjects("Planning6S").ListRows.Add

LASTROW的设置是一个范围,你planning6S表格跨越8列。因此,如果您复制了2列,然后将它们粘贴到1行乘8列范围内,则Excel将在所有8个选定列上重复两列剪贴板。

0

我敢肯定,这个问题是在这些行:

Set LastRow = ActiveSheet.ListObjects("Planning6S").ListRows.Add 

...

ActiveSheet.ListObjects("WerkplaatsTabel").DataBodyRange.Copy 
LastRow.Range.PasteSpecial xlPasteValues 

第一行插入新行,这是必要的,如果表在复制之前为空,但由于导入表为8列宽,而导出表只有两列宽,因此两列将重复4次。 (与马克菲茨杰拉德的答复保持一致)。

试试这个:

Dim LR as variant 
Set LR = ActiveSheet.ListObjects("Planning6S").DataBodyRange.Columns("A:B") 'your desired copy range` 

ActiveSheet.ListObjects("WerkplaatsTabel").DataBodyRange.Copy LR 
+0

这不适合我的工作,但我发现了一个新的解决方案: – 2015-03-25 11:15:09

+0

LastRow.Range.Cells(1,1).PasteSpecial xlPasteValues 感谢你的努力 – 2015-03-25 11:16:50

0

这是否工作,将其粘贴到LASTROW范围的第一左上角单元格?

LastRow.Cells(1,1).PasteSpecial xlPasteValues 
相关问题