2016-11-29 1 views
0

Excel에 내 DB가 있고 Word에서 보고서를 만들려면 해당 데이터베이스를 참조하고 싶습니다. 나는 수색하고 다른 선택권을 시도했다 그러나 아무도는 작동하게 보이지 않는다. 어떤 제안이라도 큰 도움이 될 것입니다. 필자는 기본적으로 두 번째 메시지 상자의 내용을 Word 문서에 붙여 넣기를 원합니다.word-VBA를 사용하여 Excel에서 Word로 Excel에 붙여 넣기

Dim ctl As Control 
Dim some As String 
Dim objExcel As Object 
Dim objWord As Object 
On Error Resume Next 

    Set objExcel = GetObject(, "Excel.Application") 
    If objExcel Is Nothing Then 
     Set objExcel = CreateObject("Excel.Application") 
    End If 

    Set objWord = GetObject(, "Word.Application") 
    If objWord Is Nothing Then 
     Set objWord = CreateObject("Word.Application") 
    End If 

    On Error GoTo 0 

    objExcel.Workbooks.Open ("File_Dir") 
    objExcel.Visible = False 
    objWord.Documents.Open ("File_Dir") 
    objWord.Visible = True 

    For Each ctl In Me.Controls 
     Select Case TypeName(ctl) 
      Case "CheckBox" 
       If ctl.Value = True Then 
        MsgBox ctl.Name 
        MsgBox objExcel.Names(ctl.Name).RefersToRange.Value 
        some = objExcel.Names(ctl.Name).RefersToRange.Value 

       End If 
     End Select 
     Next ctl 
    objExcel.Quit 
    Set objExcel = Nothing 
    MsgBox "complete" 
+0

어디서 Word 문서에 내용을 넣으시겠습니까? 좋은 방법은 단어 파일에 북마크를 만들어 콘텐츠를 넣을 수있는 방법입니다. Word에서 만들고자하는 것에 대해 더 많이 알지 못하면 무엇이 최선의 방법이 될지에 대한 유용한 제안을하는 것이 까다 롭습니다. –

+0

지금은 문서 끝 부분에 붙여 넣기를 원하지만 북마크를 사용할 수는 있지만 올바른 경우 사전 정의가 필요하며 보고서에 항상 같은 수의 북마크가있는 것은 아니지만 한 번 사용해 보겠습니다. – MrPapity

+0

이 코드를 어디에서 실행할 계획입니까? Word * 및 * Excel에 대해 CreateObject()를 사용할 필요가 없습니다. –

답변

0

interop을 사용하고 있습니까?

Dim ctl As Control 
    Dim some As String 
    Dim objExcel As Object 
    Dim objWord As Object 
    On Error Resume Next 

    Set objExcel = GetObject(, "Excel.Application") 
    If objExcel Is Nothing Then 
      Set objExcel = CreateObject("Excel.Application") 
    End If 

    Set objWord = GetObject(, "Word.Application") 
    If objWord Is Nothing Then 
      Set objWord = CreateObject("Word.Application") 
    End If 

    On Error GoTo 0 

    objExcel.Workbooks.Open ("File_Dir") 
    objExcel.Visible = False 
    objWord.Documents.Open ("File_Dir") 
    objWord.Visible = True 

    'give a counter for paragraph 
    Dim ctr as Integer = 1 

    For Each ctl In Me.Controls 
     Select Case TypeName(ctl) 
      Case "CheckBox" 
       If ctl.Value = True Then 
        MsgBox ctl.Name 
        some = objExcel.Names(ctl.Name).RefersToRange.Value 
        MsgBox some 

        'You can write data to Word document here 
        'You must add paragraph 
        objWord.Documents.addParagraph() 
        objWord.Documents.Paragraph(ctr).Range(ctl.Name) 
        ctr = ctr + 1 

       End If 
     End Select 
    Next ctl 
    objExcel.Quit 
    Set objExcel = Nothing 
    MsgBox "complete" 
+0

objWord.Documents.addParagraph() 또는 다른 변형을 시도 할 때 발생하는 문제는 "런타임 오류 '438'을 제공합니다. 개체가이 속성이나 메서드" – MrPapity

+0

"objWord를 지원하지 않습니다. 문서 '는 Word에서 열리는 문서 모음을 말합니다. -'objWord.Documents (1)' –