두 매크로, Excel 및 Word에서 두 가지 매크로가 있습니다. Excel 매크로는 Word 매크로를 호출합니다. 다음과 같이 내 코드는 다음과 같습니다Excel에서 Word 매크로를 호출하는 방법
엑셀 :
Public wb1 As Workbook
Public dt1 As Document
Sub openword()
Dim wpath, epath As String 'where the word document will be opened and where the excel sheet will be saved
Dim wordapp As Object 'preparing to open word
Set wb1 = ThisWorkbook
While wb1.Sheets.Count <> 1
wb1.Sheets(2).Delete
Wend
wpath = "C:\users\GPerry\Desktop\Projects and Work\document.docm"
Set wordapp = CreateObject("Word.Application")
'Set wordapp = CreateObject(Shell("C:\Program Files (x86)\Microsoft Office\Office14\WINWORD", vbNormalFocus)) this is one I tried to make work because while word.application seems to work, I don't *understand* it, so if anyone can help, that'd be awesome
wordapp.Visible = True
Set dt1 = wordapp.Documents.Open(wpath)
wordapp.Run "divider", wb1, dt1
dt1.Close
wordapp.Quit
End Sub
그리고 단어 :
Sub divider(wb1, dt1)
Set dt1 = ThisDocument
If dt1.Paragraphs.Count > 65000 Then
Set cutrange = dt1.Range(dt1.Paragraphs(1).Range.Start, dt1.Paragraphs(65000).Range.End)
If wb1.Sheets(Sheets.Count).Cells(1, 1) <> "" Then
wb1.Sheets.Add After:=Sheets.Count
End If
Else
Set cutrange = dt1.Content
If wb1.Sheets(Sheets.Count).Cells(1, 1) <> "" Then
wb1.Sheets.Add After:=Sheets.Count
End If
End If
cutrange.Cut Destination:=wb1.Sheets(wb1.Sheets(Sheets.Count)).Cells(1, 1)
wb1.Sheets(Sheets.Count).Cells(1, 1).TextToColumns Destination:=wb1.Sheets(1).Cells(1, 1)
End Sub
내 문제가 변수 WB1 그들 사이에서 전달 받고되지 않는 것입니다. 매크로에 보낼 변수 목록에 wb1을 넣었지만 문서에 도착하면 wb1에는 매크로 내부에 값이 없습니다. 다시 초기화 할 수는 있지만 기존 문서를 참조하는 방법을 알지 못합니다.이 문서를 열 때 해당 문서를 하나의 파일로 설정하는 방법 만 있습니다.
그래서 Word 매크로에 값을 전달하거나이 변수를 어떻게 다시 초기화합니까? 엑셀 응용 프로그램과 동등한 것을 설정하지 않고도 가능하면 시도 할 때마다 2010 년이 아니라 Excel 2003과 동일하게 설정되기 때문에 (물론 그 어떤 솔루션도 물론 환영합니다).
감사합니다.
나는에 관한 혼란 스러워요 방법'을 설정 DT1 = wordapp.Documents.Open (wpath)'와'DT1 = ThisDocument' 다른 것으로 판명 - 그들은 같은 것을 가리 키지 않는다? -하지만 도움이된다면, 알았습니다 ("박스형"을 얻는 것은 무엇을 의미합니까?). 그리고 ... 어, 어떤 종류의 변수 유형이 단정 할 것입니까? (내가 명시 적으로 선언해야하는 변수입니까?) 나는 단어 vba가 어떻게 작동하는지 정말로 모른다. 그래서 내가 추측 할 수있는 가장 가까운 것은 string이다 ... 또한, 당신이 Excel 라이브러리를 켜면 시트와 겹침 선과 같은 것들을 사용할 수 있다고 생각했다. 그냥 잘라내어 엑셀 매크로로 가져 가야할까요? –
죄송합니다. (어리석은) 많은 질문이긴하지만 죄송 합니다만 이전에 vba를 사용하여 복잡한 것을 시도한 적은 한번도 없었습니다. 전에는 vba를 사용하지 않았기 때문에 약간 압도적입니다. –
변수 'dt1'을 Excel에서 Word로 전달합니다. 제일 먼저 할 일은'ThisDocument'입니다. 그것은 호출 함수에서 무엇을 변경하지 않습니다. – Comintern