• Home
  • Market
  • Finance
  • Running
  • Reading
  • Research
  • Travel
  • Lifestyle
  • About Me
No Result
View All Result
  • Home
  • Market
  • Finance
  • Running
  • Reading
  • Research
  • Travel
  • Lifestyle
  • About Me
No Result
View All Result
Charliechacha ,Everything about Dividend 關於股息率投資的方法

自學Excel VBA系列-如何用VBA控制WORD?

2022 年 7 月 18 日
Home Reading Programming

VBA的最強大的實務功能莫過於協助我們解決繁冗重複的工作,讓我們空出頭腦去處理更多更有意義的事情,好比說是換個公司名號、改個日期,發送通知信件等等。一直點擊EXCEL名單,在WORD裡面COPY AND PASTE,每天重覆千萬次相同操作,可以說是痛苦兼無聊。

所以,接下來,讓我們看看怎樣可以試著偷偷地終結這種無聊生活吧,為什麼要偷偷地呢?因為你要是讓其它人知道,你的工作量就會被編程加重哦。

開個玩笑,我們正式進入主題之前,最好要先有點VBA的基礎,可以參考<Excel VBA的自學心得分享>。

記得,開始之前一定要在VBA裡面的工具–>設定引用項目–>勾選Microsoft Office 14.0 Object Library。

自學VBA WORD

內容目錄

  • 啟動、關閉Word應用程式
  • Set的物件變數
  • 開啟指定路徑的Word文件
  • 自學VBA-練習實作

啟動、關閉Word應用程式

‘啟動Word 然後關閉

Sub launchWord()

      ‘宣告儲存Word的變數

      Dim wdApp As Word.Application

      ‘對wdapp這個對象賦值

      Set wdApp = New Word.Application

      ‘顯示Word

      wdApp.Visible = True

      MsgBox  “OPEN WORD”

     ‘關閉Word

     wdApp.Quit

     ‘物件不參照任何內容

     Set wdApp = Nothing

End Sub

Set的物件變數

關於Set的物件變數,如果已經了解Set的朋友,可以跳過。

剛才的例子執行了三個動作:1) 打開word。2) 輸出訊息方塊。 3) 關閉word。

整個程式碼大概就只有Set的用法比較難理解,下面我們再舉個例子來解釋Set。

‘不使用set物件變數

Sub controlWorksheet()

‘輸出工作表名稱

MsgBox Worksheets(“sheet1”).Name

‘將工作表複製到右側

Worksheets(“sheet1”).Copy After:=Worksheets(“sheet1”)

End Sub

執行了兩個動作:1)輸出工作表名稱的訊息方塊。2) 將工作表複製到右側。我們可以看到Worksheets(“sheet1”)重複了三次,重複的程式寫法,會降低程式的可讀性和可維護性,下面我們可以用Set來解決重複編寫的問題。

‘使用set物件變數

Sub controlWorksheet2()

‘宣告Worksheet型的物件變數

Dim ws As Worksheet

‘將工作表Sheet1儲存在變數

Set ws = Worksheets(“sheet1”)

‘輸出工作表名稱

MsgBox ws.Name

‘將工作表複製到右側

ws.Copy After:=ws

End Sub

我們大概可以歸納出Set跟我們通常對變數賦值有點不一樣,再舉個例子,

例子1) 如果儲存格”A1”的值為1,

我們用set rng=range(“A1”) ,這個時候rng的值會參照range(“A1”)的值,

我們寫rng = 2,儲存格range(“A1”)等於2。

例子2) 如果儲存格”A1”的值為1,

我們不用set直接賦值給rng, rng=range(“A1”),這時候rng等於1,

我們寫rng = 2,這時候,儲存格range(“A1”)仍然等於1。

這就是rng作為變數直接賦值以及rng作為對象賦予一個參照的不同地方。以後只要關於對象的操作,Set就會經常出現在各種地方,所以為什麼我會花這麼多篇幅去解釋。

下面我們再回到Word的操作。

開啟指定路徑的Word文件

‘打開指定路徑的Word文件 然後關閉

Sub openWord()

‘—啟動Word應用程式—

      Dim wdApp As Word.Application

      Set wdApp = New Word.Application

      wdApp.Visible = True

‘—打開Word文件—

      ‘打開文件的路徑

      Dim path As String

      path = “C:\openword”

      ‘打開文件

      Dim wdDoc As Word.Document

      Set wdDoc = wdApp.Documents.Open(path & “\word.docx”)

      MsgBox “文件已打開”

     ‘關閉Word

     wdDoc.Close

     ‘物件不參照任何內容

     Set wdDoc = Nothing

‘—關閉Word應用程式—

     wdApp.Quit

     Set wdApp = Nothing

End Sub


打開指定文件的寫法跟最開始的launchWord()一樣,只是多了一個指定路徑文件的操作,當然,在此之前,請不忘記要先預備好指定路徑的檔案才能夠打開,我們隨便加上一些字以及表格作為標誌。

Word檔的原始檔內容

正式開始對Word文件的操作

在打開與關閉Word之間的地方加入以下語法

     ‘在段落開頭插入文字

      wdDoc.Paragraphs(1).Range.InsertBefore “2020年1月1日”

      wdDoc.Paragraphs(3).Range.InsertBefore “A公司”

      ‘將字串插入表格內的儲存格

      wdDoc.Tables(1).Cell(Row:=1, Column:=1).Range.InsertBefore “你好”

      wdDoc.Tables(2).Cell(Row:=1, Column:=1).Range.InsertBefore “感謝支持”

主要的寫法是在段落加入文字或者在表格加入文字,用表格的用處很多,只要框線無色就不會顯示是表格,而且表格可以固定位置,即使插入多行文字,也不會影響後面的段落。

跑程式後的結果

自學VBA-練習實作

下面我們動手動作實作一下,打開指定路徑的Word文件,然後添加Excel裡面的資訊,再另存新檔,關閉Word。

Word檔的原始檔內容
Excel檔的原始檔內容

‘打開指定路徑的Word文件 然後關閉

Sub openExample()

‘—啟動Word應用程式—

      Dim wdApp As Word.Application

      Set wdApp = New Word.Application

      wdApp.Visible = True

‘—打開Word文件—

      ‘打開文件的路徑

      Dim path As String

      path = “C:\openword”

      ‘打開文件

      Dim wdDoc As Word.Document

      Set wdDoc = wdApp.Documents.Open(path & “\example.docx”)

      ‘MsgBox “文件已打開”

      ‘在段落開頭插入文字

      wdDoc.Paragraphs(1).Range.InsertBefore Format(Now, “yyyy年m月d日”)

      wdDoc.Paragraphs(5).Range.InsertBefore Cells(1, 1)

      ‘將字串插入表格內的儲存格

      wdDoc.Tables(1).Cell(Row:=1, Column:=1).Range.InsertBefore Cells(1, 2) & Cells(1, 3)

      ‘使用其它名稱儲存檔案

      wdDoc.SaveAs path & “\” & Cells(1, 1).Value & “.docx”

      ‘關閉Word

      wdDoc.Close savechanges:=wdDoNotSaveChanges

      ‘物件不參照任何內容

      Set wdDoc = Nothing

‘—關閉Word應用程式—

     wdApp.Quit

     Set wdApp = Nothing

End Sub

跑程式後的結果

這個例子再加上Excel裡面儲存格的值,最後再加上特定名字儲存起來。

如果要做N次的話,各位朋友應該知道怎麼做了吧。

就是寫個FOR NEXT,然後將cells(i , j) 放入適當的變數就可以囉。

Dim i As Long 

‘有多少筆資料迴圈多少次

Dim maxRow As Long

  maxRow = Cells(Rows.Count, 1).End(xlUp).row

  For i = 1 to maxrRow

  …………….

  Next i

如果需要學習vba對outlook的操作,可以參考《自學Excel VBA系列-如何用VBA控制OutLook?》這篇。

Tags: ExcelWord程式學習VBA
Share244Tweet153Share61
Charlie chacha

Charlie chacha

Related Posts

自學Excel VBA系列-如何用VBA控制OutLook?
Lifestyle

Excel強大的組合函數練習,資料庫關鍵字搜索,Address + Match + Index + Find 組合拳

2023 年 3 月 18 日

想要把Excel的功能變得強大,函數組合使用必不可少,例如之前介紹的Offset函數,《一個強大的Excel函數OFFSET,動態選取資料範圍》,非常好用。本文介紹另外一個經常會使用到的組合拳:Add...

OpenAI 技术 GPT-3 语言生成模型 AI 研究 机器学习应用 人工智能技术 自然语言处理 数据分析 机器人技术 智能语音识别
Market

探索人工智能,了解OpenAI的未來與潛力–ChatGPT使用心得 ChatGPT可以幫到你做什麼?人工智能 語言生成 數據分析

2023 年 3 月 18 日

OpenAI ChatGPT ChatGPT的名號,大家都應該非常熟悉。地區破解什麼就不討論,兩個條件,地區VPN,以及SMS認證服務,還不能是虛擬號碼,我花了幾天時間也找不到方便安全的省錢方法,建議...

vba 自學
Programming

自學VBA系列,網頁抓取的按鈕選擇及下拉式選單問題

2022 年 12 月 29 日

網頁抓取的過程中經常會出現各種各樣的問題,今天就按鈕選擇及下拉式選單碰到的問題略作解釋。 按鈕選擇問題: Sub NewUpdatedata() 'Dim ur As String, b, ie As...

自學Excel VBA系列-如何用VBA控制OutLook?
Lifestyle

自學Excel VBA系列-如何用VBA控制OutLook?

2022 年 7 月 18 日

前言: 上次講解過如何用VBA控制Word,希望大家都能實際運用,節省時間。 我相信很多朋友對於如何提升生產力,優化時間管理的效益有很大需求,那麼我們今天再來講解一下VBA對於Outlook的操作。 ...

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

About Me

Charliechacha ,Everything about Dividend 關於股息率投資的方法

Charlie Chacha

Blogger and Knowledge Seeker

Welcome to my blog! My name is Charlie chacha, I share practical knowledge, whick is different from theoretical. Focus on your life, how you spend your time . Learn hard , live well and make money while you sleep.

Categories

  • Finance (31)
  • Lifestyle (7)
  • Market (16)
  • Programming (12)
  • Reading (39)
  • Research (21)
  • Running (39)
  • Travel (2)

Popular

  • JAVA學習筆記 ArrayList

    一個強大的Excel函數OFFSET,動態選取資料範圍

    1112 shares
    Share 445 Tweet 278
  • Excel VBA的自學心得分享

    1026 shares
    Share 410 Tweet 257
  • 自學Excel VBA系列-如何用VBA控制WORD?

    611 shares
    Share 244 Tweet 153
  • 自學Excel VBA系列-如何用VBA控制OutLook?

    548 shares
    Share 219 Tweet 137
  • 日元貶值,日本央行為什麼不加息?

    458 shares
    Share 183 Tweet 115

Instagram

    Go to the Customizer > JNews : Social, Like & View > Instagram Feed Setting, to connect your Instagram account.
No Result
View All Result
  • Home
  • Market
  • Finance
  • Running
  • Reading
  • Research
  • Travel
  • Lifestyle
  • About Me