說明1. 用 ActiveWorkbook.Path 取得 Excel 活頁簿的所在資料夾
2. Excel 2010 要用副檔名 xlsm 儲存才能存 Macros (程式碼)
3. 開啟 Word 先用 instances = OpenWord() 返回 Word 的實體,操作完後用 CloseWord(instances) 關閉
4. 程式碼需要先加入參考 Microsoft Word XXX Object Library,如果用 2010 版 XXX 是 14.0
5. 底下程式碼開啟和 Excel 同資料夾的 Word 文件名稱 "Document1.docx"
6. 程式碼如和測試如附件所示,請將 test 資料夾放到 "C:\test\" 進行測試
圖片▼ 如何執行 Macro
▼ Document1.docx 內容
▼ 執行 TestOpenWord() 結果
如果執行 TestGetCurrentWorkingDirectory() 你應該會看到 "C:\test\"
程式碼複製程式
Option Explicit
' Test getting current working directory and opening word files.
'
' Note: Add the following references:
' Microsoft Word XXX Object Library
'
' Author: Shawn Chang
' Tested on Excel 2010 and Word 2010
Private Type WordInstances
wordApp As Word.Application
wordDoc As Word.Document
End Type
Public Sub TestGetCurrentWorkingDirectory()
MsgBox GetCurrentWorkingDirectory()
End Sub
Public Sub TestOpenWord()
' Open word instances by document path
Dim documentPath As String
Dim instances As WordInstances
documentPath = GetCurrentWorkingDirectory() & "\Document1.docx"
instances = OpenWord(documentPath)
' Get first paragraph text
Dim firstParagraphText As String
firstParagraphText = GetWordParagraphText(instances.wordDoc, 1)
' Show first paragraph text
MsgBox firstParagraphText
' Close word instances
CloseWord instances
End Sub
Private Function GetCurrentWorkingDirectory() As String
GetCurrentWorkingDirectory = ActiveWorkbook.Path
End Function
Private Function GetWordParagraphText(doc As Word.Document, paragraphIndex As Integer) As String
Dim docParagraph As Word.Paragraph
Set docParagraph = doc.Paragraphs(paragraphIndex)
GetWordParagraphText = docParagraph.Range.Text
End Function
Private Function OpenWord(docPath As String) As WordInstances
Dim instances As WordInstances
With instances
Set .wordApp = CreateObject("Word.Application")
Set .wordDoc = GetObject(docPath)
End With
OpenWord = instances
End Function
Private Sub CloseWord(instances As WordInstances)
With instances
.wordDoc.Close
.wordApp.Quit
Set .wordApp = Nothing
Set .wordDoc = Nothing
End With
End Sub
參考How to use Automation with Word 2002