Board logo

標題: [發問] WORD檔資料位移無法分開讀取 [打印本頁]

作者: dechiuan999    時間: 2012-6-22 22:39     標題: WORD檔資料位移無法分開讀取

各位大大好:

   小弟想利用下列語法取出指定WORD檔
其檔案格式為RTF。但發現該檔案資料取
出之後其位置已位移,因此無法像TXT檔
可計算第幾位元數。
   小弟開啟WORD也發現它有使用到定位點
,從其標題有五個部分也分別使用定位點。
但只要讀取該資料時,又會出現整列資料
併在一起。無法像它使用的定位點可分開讀取。
請問如何可算出位元數並取出該檔案
資料轉入至EXCEL表內呢?

語法如下:
Sub test()
   
    Dim wrdApp As Word.Application
    Dim wrdDoc As Word.Document
    Dim tString As String, tRange As Word.Range
    Dim p As Long
    Dim mFile$
   
    Application.ScreenUpdating = False
   
    mFile = "D:\temp\r75test.rtf"
   
    Set wrdApp = CreateObject("Word.Application")
    Set wrdDoc = wrdApp.Documents.Open(mFile, ReadOnly:=True)
  
    With wrdDoc
        For p = 1 To .Paragraphs.Count
            Set tRange = .Range(Start:=.Paragraphs(p).Range.Start, _
                End:=.Paragraphs(p).Range.End)
            tString = tRange.Text
            Debug.Print tString    '讀取之後其定位點的位置己不存在了
           
        Next p
        .Close ' close the document
    End With
    wrdApp.Quit ' close the Word application
    Set wrdDoc = Nothing
    Set wrdApp = Nothing     
   
End Sub
謝謝各位大大
[attach]11459[/attach]
作者: GBKEE    時間: 2012-6-23 09:58

回復 1# dechiuan999
我 WORD 的VBA 不太熟, 試試看複製到Excel 在去處理
  1. Sub 巨集2()
  2.      Application.ActiveDocument.Range.Copy
  3.      Word_vba
  4. End Sub
  5. Sub Word_vba()
  6.     Dim xlWkApp As Object, xlWk As Object
  7.     Set xlWkApp = CreateObject("excel.application")
  8.     Application.DisplayAlerts = False                 '關閉系統的詢問視窗
  9.     With xlWkApp
  10.         .Visible = True
  11.         Set xlWk = .workbooks.Open(FileName:="d:\試算表\Book3.xls", Password:="1234", IgnoreReadOnlyRecommended:=False)
  12.        ' xlWk.Sheets(1).Range("c3") = ActiveDocument.Tables(1).Cell(1, 1)
  13.         xlWk.Sheets(1).Paste
  14.         xlWk.Close False
  15.     End With
  16.     xlWkApp.Quit
  17.     Set xlWkApp = Nothing
  18. End Sub
複製代碼

作者: dechiuan999    時間: 2012-6-23 20:32

回復 2# GBKEE
版主大大您好:

   謝謝版主大大的指敎。
不過,小弟還是無法理解
語法的內含。不知如何啟用
該語法。
   另之前客戶端提供的
WORD檔,小弟會先將其轉成
TXT檔再利用WORKBOOKS.OPENTEXT FILENAME
利用資料剖析方式取出資料。
後來改用HSIEH版主大大提供直接引用
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
也都很順利。最主要的是該資料的
排列位置可以很清楚的分辨是屬於
那一欄位的資料。
但近日客戶端不知為何其WORD版本看
似相同,但轉成TXT檔時整個欄位
會併在一起,也就無法分辨是那一欄
位的資料了。因其表頭可分成四個欄位
一、Marks & Nos  
二、Description of Goods
三、Quantity
四、Unit Price

因此,小弟只好改用人工鍵盤
來輸入資料,再存入自己的
資料庫。不但浪費時間,又
會担憂資料出錯。

小弟想再提供之前客戶端提供
的另一WORD檔案,使用小弟
的表單來取出資料也都可以
逹成。不知此二個檔案為何
會有如此大的差異呢?

謝謝版主大大。
[attach]11472[/attach]
作者: dechiuan999    時間: 2012-6-24 06:58

回復 2# GBKEE


版主大大早安:
小弟今早有測試一原始方法,
先開啟Excel→再開啟該
Word檔之後,將欲複製
之Word資料選取→選複製
→再回到Excel選貼上。其
表格仍保留與word相同。
因此,小弟可先使用半手工
方式來達了。
只是小弟仍想知道如何突破此
word檔為何透過程式讀取時
其表格欄位會完全改變呢?

感恩大大!
作者: GBKEE    時間: 2012-6-24 13:18

回復 4# dechiuan999
兩文件的格式不相同是很傷腦的 我慢慢試試看是否有解,
且有還請高手看看
作者: GBKEE    時間: 2012-6-25 14:46

回復 4# dechiuan999
WORD檔,小弟會先將其轉成,TXT檔再利用WORKBOOKS.OPENTEXT FILENAME,利用資料剖析方式取出資料。
改用 OpenTextFile  開啟 TXT檔 試試看

[attach]11487[/attach]
  1. Private Sub UserForm_Initialize()
  2.     xPath = "D:\"          '  這裡請修改為指定的目錄
  3.     Set mSh = ThisWorkbook.Sheets("IV")
  4.     mSh.Cells.Clear
  5.     CommandButton2.Enabled = False
  6.     CommandButton3.Enabled = False
  7.     CommandButton4.Enabled = False
  8. End Sub
複製代碼

作者: dechiuan999    時間: 2012-6-25 20:15

回復 6# GBKEE


    版主大大您好:

小弟引用版主大大提供之
語法測試很成功。
小弟會再詳加研究版主大大
的語法。
目前仍處在霚裡看花
的階段。

感恩大大!
作者: dechiuan999    時間: 2012-6-26 07:01

本帖最後由 dechiuan999 於 2012-6-26 07:05 編輯

回復 6# GBKEE


版主大大您好:

  小弟已理解版主提供
的語法了。當我理解語法的
時候,感受那種喜悅真是
另人難以形容 。
TheSplit = Split(Str, vbTab)
多謝版主大大如此費心相助。
小弟真是受益良多。

就感恩!
作者: GBKEE    時間: 2012-6-26 07:56

回復 8# dechiuan999
當我可以幫你解題時, 你感受那種喜悅的感覺,我也是感同身受的




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