Excel – 使用VB在工作簿之间复制粘贴(转置)

我试图复制一系列单元格的值,然后使用VBA将其粘贴到不同的工作簿上。 但是,该代码仅粘贴第一个复制的单元格,其余的范围留空。 我无法识别我的错误。

这是代码:

Sub Data() Dim wbk As Workbook` Dim wks As Worksheet` carp = ThisWorkbook.Path & "\Bases de datos\" a = "Cuadros_de_salida_IMAE.xls" Application.EnableEvents = False Set wbk = Workbooks.Open(carp & a) Set wks = wbk.Worksheets("Activ") Application.EnableEvents = True wks.Rows.Hidden = False b = "D" c0 = 9 c1 = 25 E = "IMAE" f0 = "G" f1 = "W" g = 6 iniRow = c0 finRow = c1 wks.Range(b & iniRow & ":" & b & finRow).End(xlToRight).Copy ThisWorkbook.Worksheets(E).Range(f0 & g).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Transpose:=True Windows(a).Activate Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True 

谢谢。 我非常感谢一些帮助。

花了我一段时间来备份你有的代码…好像很多不必要的variables/引用。

 Dim LR as Long LR = Cells(wks.Rows.Count, 1).End(xlUp).Row Dim LC as Long LC = Cells(wks.Columns.Count, 1).End(xlToLeft).Column wks.RANGE(Cells(9,7),Cells(LR,LC)).Copy Worksheets(E).Range(Cells(6,7),Cells(LR-3,LC)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Transpose:=True 'LR-3 because G9 and G6 row difference 

这对你来说应该是一个体面的开始。

有可能是一个更好的方法来做到这一点,但问题是与wks.Range(b & iniRow & ":" & b & finRow).End(xlToRight).Copy语句。 如果您将其更改为:

 wks.Range(b & iniRow & ":" & b & finRow).Select Range(Selection, Selection.End(xlToRight).Copy 

你的代码应该工作。 如有疑问,请使用macros录机:)