2016-10-25 1 views
1

나는이 사이트를 얼마 동안 사용해 왔지만 대개 내 질문을 모두 조사했지만이 날 저를 며칠 동안 저주했습니다.Excel에서 Word로 값을 복사하여 붙여 넣기 범위

사용자가 특정 데이터를 입력 할 수있는 시트가있는 Excel 통합 문서가 있으며 매크로가 사용되면 각 매크로에 대해 특수하게 포맷 된 Word 문서가 만들어집니다.

Excel에서 범위를 복사하려고하지만 모든 행이 완료되지는 않습니다. 범위는 현재 25 행이지만, 대부분의 사용자는 8 ~ 12을 사용합니다 :

Set tbl = ThisWorkbook.Worksheets(Sheet4.Name).Range("A8:D33") 

나는 테이블로 Word로이 범위를 복사하여 붙여 넣을 수 있지만뿐만 아니라 빈 행을 얻고있다. Excel에서 나는 단순히 .PasteSpecial Paste : = xlPasteValues하지만 이것은 Word 형식과 호환되지 않습니다.

With Doc.Paragraphs(21).Range 
    tbl.Copy 
    Doc.Paragraphs(21).Range.PasteExcelTable LinkedToExcel:=False, _ 
    WordFormatting:=False, _ 
    RTF:=False 
    '.PageSetup.LeftMargin = "40" 
    '.PageSetup.RightMargin = "40" 

    Set wtbl = Doc.Tables(1) 
    wtbl.AutoFitBehavior (wdAutoFitContent) 
    wtbl.Borders.Enable = True 
     With wtbl.Rows(1) 
      .Height = 10 
      .Cells.VerticalAlignment = wdAlignVerticalBottom 
     End With 
    'wtbl.Rows.Cells.VerticalAlignment = wdCellAlignVerticalBottom 
    'wtbl.Rows.Height = 15 

    'Doc.Paragraphs(23).AutoFitBehavior (wdAutoFitWindow) 

End With 
+0

주석 처리 된 몇 가지 섹션을 무시하십시오. 그들은 작동하지 않으며 일단 내가 원하는 날짜를 채우기 위해 테이블을 얻으면 포맷팅을합니다. 나는 나중에 그 분야와 함께 놀 것이다. –

+0

"대부분의 사용자가 8-12 만 사용합니다"대신 Excel 범위의 크기를 동적으로 조정하지 않는 이유는 무엇입니까? – Comintern

+0

죄송합니다. 범위를 동적으로 지정하면 무슨 뜻인지 알 수 없습니까? 내가 많은 것을 요구할 시나리오가 하나 있기 때문에 최대 25 개의 행을 허용해야합니다. –

답변

1

당신은이 같은 열에서 마지막으로 사용한 셀을 찾을 수 있습니다

다음은 내 Word 문서로 범위를 복사 할 내 현재 코드입니다. 모든 열에 데이터가 있고 행 8에서 데이터 입력이 있다고 가정하면

With Sheet4 
    Dim lastRow As Long 
    lastRow = .Range(.Cells(8, 1), .Cells(33, 1)).End(xlDown).Row 
    Set tbl = .Range(.Cells(8, 1), .Cells(lastRow, 4)) 
End With 
+0

정말 고마워요, 그건 매력처럼 작동했습니다! –

+0

괜찮으 시다면 마지막으로 한 가지 질문을하겠습니다. 나는 바닥의 모든 줄이 비어 있다고 당신에게 말했을 때 완전히 엉망이되었습니다. 마지막 행 (33)에는 실제로 "합계"라는 단어가있는 3 개의 병합 된 셀이 있고 셀 D33은 D 열을 모두 합합니다. 33 행을 포함하도록 코드를 적용 할 수있는 방법이 있습니까? –

+1

난 그냥 * except * 행 33 ('.Cells (33, 1)'대신에'.Cells (32, 1)')을 복사하고, 나중에 합계 행을 수동으로 추가한다. – Comintern