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

Vba Excel-使用VB在工作簿之间复制粘贴(转置),vba,excel,copy-paste,Vba,Excel,Copy Paste,我试图复制一系列单元格的值,然后使用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 w

我试图复制一系列单元格的值,然后使用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

谢谢。非常感谢您的帮助。

可能有更好的方法,但问题在于
wks.Range(b&iniRow&“:”&b&finRow).End(xlToRight).复制
语句。如果将此更改为:

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

你的代码应该可以工作。当有疑问时,请使用宏记录器:)

我花了一段时间来整理您的代码。。。似乎有很多不必要的变量/引用

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

这应该是一个不错的开始。

我通常可以选择粘贴位置的起始单元格(G6),excel/vba将定义范围。我把代码从G6编码到范围的末尾(动态)。谢谢Cyril,你的建议真的很有帮助。这回答了你的问题吗,@AlvaroLopezE?他使用wks.Range(“G6:G25”).End(xlToRight)。Copy作为他的行(后面跟着他的变量)。您是否希望避免选择并加快该过程?您知道最后一行,但最后一列是唯一的任务参数,因此是xlToRight。感谢您的回复。