Board logo

標題: [發問] 如何利用EXCEL-VBA 擷取WORD文字 填入儲存格  [打印本頁]

作者: wslee    時間: 2014-11-12 20:28     標題: 如何利用EXCEL-VBA 擷取WORD文字 填入儲存格 

請教各位前輩

如何利用EXCEL-VBA 擷取WORD文字 填入儲存格

如下所示
EXCEL資料表
[attach]19538[/attach]
WORD檔案
[attach]19539[/attach]


其中EXCEL檔內欄位”WORD檔文字”需開啟相對應的WORD檔,複製WORD檔內文字的”作業地點”填入儲存格

資料有上萬筆∼原本利用資料夾設定”超連結”連接檔案
再一筆一筆複製貼上∼結果一天空檔只貼了300筆∼還不知道有沒有出錯 Orz

想說是否可利用EXCEL-VBA 解決∼麻煩前輩指導
檔案如下
[attach]19537[/attach]
作者: mmxxxx    時間: 2014-11-13 09:29

建議的做法,
先將"作業地點", 逐一copy至一文字檔(txt),
再依要分欄位的資料, 用區格字元區.
再使用Excel讀入, 依區各字元切割匯入, 即大功告成.

要用EXCEL VBA  開啟Word, 如下, 但要parse "作業地點"出來可不容易了.
Set wordapp = CreateObject("word.Application")
  wordapp.documents.Open "C:\Documents and Settings\anitao\My Dcuments\alo2004.doc"
   wordapp.Visible = True
作者: wslee    時間: 2014-11-14 15:00

所以前輩的意思是
1.是利用VBA直接開啟WORD連結
2.先找出WORD表格第一格內欄位資料,填入EXCEL
3.最後再利用字元分割,篩選出我要的資料就好
作者: GBKEE    時間: 2014-11-15 16:15

回復 3# wslee
試試看
  1. Option Explicit
  2. Sub EX()
  3.     Dim Rng As Range, S As Variant, xFile As String
  4.     Set Rng = Sheets("工作表1").Range("D3")    '第一個有檔案名稱的儲存格
  5.     With CreateObject("Word.application")   'Word應用程式
  6.         .Visible = True  '物件可見
  7.         Do While Rng <> ""
  8.             xFile = ThisWorkbook.Path & "\" & Rng
  9.            'ThisWorkbook.Path =>Excel檔案存放目錄位置,可修改為Word檔案存放目錄位置
  10.            If Dir(xFile, vbDirectory) <> "" Then
  11.                 .Documents.Open xFile
  12.                 With .ActiveDocument
  13.                     S = Split(.Range.Text, "作業地點:")(1) '字串用"作業地點:" 分割的陣列(1)元素
  14.                     S = Split(S, "(")(0)                   '字串用"("  分割的陣列(0)元素
  15.                     Rng.Offset(, 1) = S         '向右一欄的個儲存格
  16.                     Set Rng = Rng.Offset(1)     '往下一列個儲存格
  17.                     .Close
  18.                 End With
  19.             End If
  20.         Loop
  21.         .Quit
  22.         MsgBox "作業 OK!"
  23.     End With
  24. End Sub
複製代碼

作者: wslee    時間: 2014-11-16 17:00

謝謝板主            
真...的...太...強...了
再次感謝~問題已解決




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)