2012-12-11 68 views
0

我想將某個列(A,B和E)從一個工作簿複製到另一個工作簿。我寫了下面的宏,用冷靜的人在這裏計算器的幫助,但是這個代碼不復製表格標題,如「書房2100E - 週五,二零一二年十一月三十零日」Excel宏將行從一個文件複製到另一個文件

Sub CopyColumnToWorkbook() 
Dim sourceColumn As Range, targetColumn As Range 

Set sourceColumn = Workbooks("Source.xlsm").Worksheets(1).Columns("A:B" & lr) 
Set targetColumn = Workbooks("Target.xlsm").Worksheets(1).Columns("A:B") 

Set sourceColumn2 = Workbooks("Source.xlsm").Worksheets(1).Columns("E" & lr) 
Set targetColumn2 = Workbooks("Target.xlsm").Worksheets(1).Columns("C") 

sourceColumn.Copy Destination:=targetColumn 
sourceColumn2.Copy Destination:=targetColumn2 

End Sub 

這是source file

這是我的current target文件:(編輯,包括正確的鏈接下午6時58分美國東部時間12月11日)

這是我desired target文件:

源文件由許多帶有單獨表標題的表組成。如您所知,表格的行A,B和E正在被複制,但表格標題未被複制。我如何修改我的代碼,使我目前的目標文件看起來像我想要的目標文件?謝謝

回答

2

你得到結果的原因是頭是合併的單元格,寬度爲4個單元格,並且2列的複製/粘貼不會捕獲這些單元格的值(不知道爲什麼)。

解決辦法是首先複製(通過變體數組),然後複製/粘貼特殊的格式。

這將創建具有2格寬的合併單元格的標題。複製操作後,您將需要調整標題。

注意,你應該聲明所有的變量

Option Explicit ' First line in Module 

Sub CopyColumnToWorkbook() 
    Dim sourceColumn As Range, targetColumn As Range 
    Dim sourceColumn2 As Range, targetColumn2 As Range 
    Dim lr As String ' <-- don't know what this is for, left it in as it's in your OP 
    Dim rw As Range 

    Set sourceColumn = Workbooks("Source.xlsm").Worksheets(1).UsedRange.Columns("A:B" & lr) 
    Set targetColumn = Workbooks("Target.xlsm").Worksheets(1).Columns("A:B").Resize(sourceColumn.Rows.Count) 

    ' Copy values 
    targetColumn = sourceColumn.Value 
    ' Copy Format 
    sourceColumn.Copy 
    targetColumn.PasteSpecial xlPasteFormats 

    Set sourceColumn2 = Workbooks("Source.xlsm").Worksheets(1).Columns("E" & lr) 
    Set targetColumn2 = Workbooks("Target.xlsm").Worksheets(1).Columns("C") 
    sourceColumn2.Copy Destination:=targetColumn2 

    ' Adjust Headers 
    For Each rw In targetColumn.Rows 
     If rw.MergeCells Then 
      rw.Resize(1, 4).Merge 
      ' Appy cell format to headers here if required 
      rw.Font.Size = 18 
      ' etc ... 
     End If 
    Next 

End Sub 
+0

非常感謝您的回覆。我無法相信,直到2014年,我才感受到你的好意。我的錯。新年快樂! – Amatya

1

試試這個

+0

感謝您的回覆。對不起,我花了很長時間來謝謝你。乾杯! – Amatya

相關問題