2017-12-09 64 views
0

Word의 책갈피에 Excel의 다양한 텍스트 데이터 (40 열)를 삽입/붙여 넣기합니다. 대부분의 대답은 Excel VBA를 사용하여 수행됩니다. Word 문서를 열어두고 '가져 오기 데이터'매크로를 실행하는 버튼을 추가 할 때 유용하지는 않습니다. 사실 이미 책갈피에 이미지를 삽입하는 문서 버튼이있어서 Excel VBA를 통해 이미지를 삽입하고 싶지 않은 이유가 하나 더 있습니다.Word VBA를 사용하여 Excel에서 Excel의 셀 범위를 Word에서 책갈피로 복사

나는이 좋은 코드가 아닙니다 알고 있지만 확실한 리드의 부족, 난 여기가 던지는거야이 당신에게 내가 달성하기 위해 노력하고있어의 아이디어를 제공 희망 :

Sub ImportData() 

Workbooks.Open ("\Book2.xlsm") 
    ActiveWindow.WindowState = xlMinimized 
    ThisWorkbook.Activate 

    Windows("Book2.xlsm").Activate 
    Range("A1:AF1").Select 
    Selection.Copy 
    Documents("test.docm").Activate 
    Selection.GoTo What:=wdGoToBookmark, Name:="Overlay_1" 
    Selection.Paste 

End Sub 

을 추신 : Word에서 붙여 넣을 때 40 열을 행으로 '옮겨 놓을 수'있다면 좋을 것입니다.

Sub ImportData() 

Dim wb As Workbooks 
Dim ws As Worksheets 
Dim objSheet As Object 
Dim objWord As Object 
Set objWord = CreateObject("Word.Application") 

wb.Open ("C:\Users\pc\Documents\Book2.xlsm") 
Set objSheet = CreateObject("Excel.Application") 
ActiveWindow.WindowState = xlMinimized 
Set ws = Workbooks("Book2.xlsm").Sheets("Sheet1") 
ws.Range("A1").Value.Copy 

With objWord.ActiveDocument 
    .Bookmarks("Bookmark_1").Range.Text = ws.Range("A1").Value 
End With 

End Sub 

나는이 오류를 받고 있어요 : 여기

내 코드에 대한 업데이트가 @Variatus의 조언을 기반으로 내가 지금은 하나의 셀 참조와 함께 붙어 방법

Runtime Error '91': Object variable or With block variable not set.

공지 사항 (A1). 길을 따라 배울 때 코드를 업데이트 할 것입니다.

+1

부적절한 [단어] 태그 (MS Word와 관련없는 ** 태그 없음)를 제거하고 [excel-vba] 태그를 추가했습니다. 문제에 대한 해결책은 Word 및 Excel VBA를 사용하는 것입니다. 지난 2 일 동안 본 다른 모든 답변과 마찬가지로 - 원하는 답변과 이미 보았던 답변 간의 유일한 차이점은 여러분의 코드가 시작되기 전에'Application' 객체가 생성되고, 여러분의 코드의 일부로 생성되는'Application' 객체가 있어야합니다. (귀하의 경우,'Word.Application'이 이미 존재하며, Excel.Application'을 생성 할 것입니다.) – YowE3K

답변

0

Word 문서에서 단추를 클릭하면 다음 순서가 시작됩니다.

  1. Excel 응용 프로그램 개체를 만듭니다. Excel의 VBA 개체를 사용할 수 있도록 Excel에 대한 참조가 설정되어 있는지 확인하십시오 (VBE> 도구> 참조).
  2. Excel 응용 프로그램 개체를 사용하여 통합 문서를 엽니 다. 개체를 만듭니다. 개체를 보이지 않는 창에 배치하십시오.
  3. 통합 문서 또는 Word 문서에서 아무 것도 활성화하거나 선택하는 것을 잊어 버리십시오. 후자는 활동적이며 처음부터 끝까지 활동적입니다. 북마크는 문서에서 선택하고 선택하지 않고 이름으로 참조하고 조작 할 수있는 지점입니다. Excel 통합 문서가 보이지 않습니다. Range 객체를 사용하여 그 중 일부에 액세스 할 수 있습니다.
  4. 통합 문서에서 원하는 데이터는 워크 시트에 있습니다. 데이터를 그리려는 워크 시트의 개체를 만들어야합니다.
  5. Excel 테이블이 Word 테이블로 잘 변환되지 않습니다. 그런 식으로 가고 싶다면 VBA를 사용하여 Excel에서 원하는 테이블을 만드는 것이 좋습니다 (Word로 가져 오기 전에 데이터를 조판하십시오). 그러나 Word에서 원하는 표를 먼저 만든 다음 Excel 원본의 값을 Word 표로 복사하는 것이 더 쉽습니다. 한 번에 하나의 셀 값을 가져 와서 하나의 Word 표 셀에 배치해야합니다. 전치는 사용하는 알고리즘에 의해 수행됩니다.
  6. 통합 문서를 닫습니다. Excel 응용 프로그램을 종료하십시오. Excel 응용 프로그램 = 아무 것도 설정하지 마십시오. 매크로의 끝에는 문서가 이전에 가지고 있지 않은 데이터가 있다는 점을 제외하면 이전과 동일합니다.

위의 6 개 점은 각각 적어도 하나 이상의 질문으로 연결됩니다. 주제를 봤고 몇 가지 코드를 작성한 후에 여기에서 질문 할 수 있습니다. 사실, 나는 하나의 Main 프로 시저 (버튼 클릭에 응답하는 프로 시저)를 생성하고 해당 프로 시저가 서브 작업을 지원하는 개별 작업과 기능을 수행하는 다양한 서브를 호출 할 것을 강력하게 권합니다. 작성한 부품이 작을수록 코드를 작성하고, 질문 할 항목을 찾고, 답변을 얻는 것이 더 쉽습니다.프로젝트를 계획하는 경우 완료 될 때까지 약 12 ​​개의 절차가 있다고 예상하십시오. 행운을 빕니다!

+0

안녕하세요! 할 일들에 대한이 멋진 고장에 감사드립니다. 나는 UBA (UDMy, LOL에서 VBA 지식의 ~ 5 시간 상당)에 대한 완전한 멍청이라고 말해야 만하지만 그것은 변명의 여지가 없다. 제안 된 단계를 거친 패턴이 생겼습니다). 그래도 진행하기 전에 한 가지 질문 : 현 시점 # 5, 표를 만들지 않고도 Word의 단일 책갈피에 셀 범위를 붙여 넣을 수 있습니까? 마찬가지로 내가 A1 : A10을 Word에 직접 붙여 넣은 다음 거기에 수동 '트랜스 포즈'를 할 수 있습니까? –

+0

지금 Word에서 40 개의 북마크를 만들고 실제로 Excel의 각 셀을 참조 할 계획입니다 ... 지금 생각할 수있는 가장 단순하고 추악한 해결 방법은 다음과 같습니다. –

+0

Word 문서를 다음과 같은 번호의 문자열로 상상해보십시오. 1부터 Document.Characters.Count. 북마크는이 문자열에서 숫자 (또는 일련 번호의 범위)로 정의됩니다. 북마크가 정의한 지점, 그림, 표 또는 텍스트에 아무 것도 삽입하지 못하도록 코드를 작성할 수 있습니다. 북마크가 여러 개의 숫자로 구성되어 있으면 정의 된 문자를 다른 것으로 대체 할 수 있습니다. – Variatus