伊莉討論區

標題: Excel VBA 自動另存Word檔案到指定路徑 [打印本頁]

作者: alan12345678900    時間: 2015-2-13 08:47 PM     標題: Excel VBA 自動另存Word檔案到指定路徑

本帖最後由 alan12345678900 於 2015-2-13 08:55 PM 編輯

如標題,我有一隻程式是用Excel VBA 去寫的,但需要以下要求:



希望有熟練VBA的人,可以幫我解決上述問題。
作者: Jeepluo    時間: 2015-2-18 12:08 PM

本帖最後由 Jeepluo 於 2015-2-18 12:09 PM 編輯

以下的資訊可以參考看看
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\" 進行測試
程式碼:
  1. Option Explicit

  2. ' Test getting current working directory and opening word files.
  3. '
  4. ' Note: Add the following references:
  5. ' Microsoft Word XXX Object Library
  6. '
  7. ' Author: Shawn Chang
  8. ' Tested on Excel 2010 and Word 2010

  9. Private Type WordInstances
  10.     wordApp As Word.Application
  11.     wordDoc As Word.Document
  12. End Type

  13. Public Sub TestGetCurrentWorkingDirectory()
  14.     MsgBox GetCurrentWorkingDirectory()
  15. End Sub

  16. Public Sub TestOpenWord()
  17.     ' Open word instances by document path
  18.     Dim documentPath As String
  19.     Dim instances As WordInstances
  20.    
  21.     documentPath = GetCurrentWorkingDirectory() & "\Document1.docx"

  22.     instances = OpenWord(documentPath)

  23.     ' Get first paragraph text
  24.     Dim firstParagraphText As String
  25.    
  26.     firstParagraphText = GetWordParagraphText(instances.wordDoc, 1)
  27.    
  28.     ' Show first paragraph text
  29.     MsgBox firstParagraphText
  30.    
  31.     ' Close word instances
  32.     CloseWord instances
  33. End Sub

  34. Private Function GetCurrentWorkingDirectory() As String
  35.     GetCurrentWorkingDirectory = ActiveWorkbook.Path
  36. End Function

  37. Private Function GetWordParagraphText(doc As Word.Document, paragraphIndex As Integer) As String
  38.     Dim docParagraph As Word.Paragraph

  39.     Set docParagraph = doc.Paragraphs(paragraphIndex)

  40.     GetWordParagraphText = docParagraph.Range.Text
  41. End Function

  42. Private Function OpenWord(docPath As String) As WordInstances
  43.     Dim instances As WordInstances

  44.     With instances
  45.         Set .wordApp = CreateObject("Word.Application")
  46.         Set .wordDoc = GetObject(docPath)
  47.     End With
  48.    
  49.     OpenWord = instances
  50. End Function

  51. Private Sub CloseWord(instances As WordInstances)
  52.     With instances
  53.         .wordDoc.Close
  54.         .wordApp.Quit

  55.         Set .wordApp = Nothing
  56.         Set .wordDoc = Nothing
  57.     End With
  58. End Sub
複製代碼

作者: alan12345678900    時間: 2015-2-18 12:23 PM

Jeepluo 發表於 2015-2-18 12:08 PM
以下的資訊可以參考看看
1. 用 ActiveWorkbook.Path 取得 Excel 活頁簿的所在資料夾
2. Excel 2010 要用副 ...

我想請問你程式碼是你寫的嗎?

我在其他論壇也看到一樣的程式碼,一樣的回答。
作者: Jeepluo    時間: 2015-2-18 03:12 PM

不是的,我只是幫你找一下,剩下的就要靠自已整合了,其實就算不用寫VBA也可以達到匯至 Word 的,只要你使用 Word中的合併列印就可以達到了。




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!