2017-01-12 1 views
0

셀 범위의 값을 복사 한 다음 VBA를 사용하여 다른 통합 문서에 붙여 넣으려고합니다. 그러나 코드는 첫 번째로 복사 된 셀만 붙여넣고 나머지 범위는 비워 둡니다. 나는 나의 실수를 확인할 수 없었다.Excel - VB에서 통합 문서간에 복사하여 붙여 넣기 (transpose)

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 

감사 :

는 코드입니다. 나는 정말로 도움을 주셔서 감사합니다.

답변

0

아마도이 방법을 사용하는 것이 좋지만 문제는 wks.Range(b & iniRow & ":" & b & finRow).End(xlToRight).Copy 문과 관련이 있습니다. 이를 다음과 같이 변경하면 :

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

코드가 작동해야합니다. 의심 스럽다면 매크로 레코더를 사용하십시오 :)

+0

그는 wks.Range ("G6 : G25")를 사용하고 있습니다. (변수를 추적하여) 선으로 끝내십시오 (xlToRight). 복사하십시오. 선택을 피하고 그 과정을 가속화하고 싶지 않겠습니까? 최종 행은 알지만 최종 열은 유일한 임무 매개 변수이므로 xlToRight입니다. – Cyril

+0

답변 해 주셔서 감사합니다. –

1

코드를 백 픽업하려면 ... 불필요한 변수/참조가 많이있는 것처럼 보입니다.

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 

괜찮은 시작이어야합니다.

+0

보통 붙여 넣기 위치의 시작 셀 (G6)을 선택할 수 있으며 Excel/VBA가 범위를 정의합니다. 나는 G6에서 범위의 끝까지 (역동적으로) 코딩했다. – Cyril

+0

감사의 말 Cyril, 당신의 제안은 정말 도움이되었습니다. –

+0

이 답변을 @ AlvaroLopezE에 보냈습니까? ? – Cyril

관련 문제