การแปลงไฟล์ Word 2000 หรือสูงกว่าให้เป็น Word 97
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 232   2
URL.หัวข้อ / URL
การแปลงไฟล์ Word 2000 หรือสูงกว่าให้เป็น Word 97

วันนี้ผมต้องแปลงไฟล์ Word 2000 ให้เป็น Word 97 มีทั้งหมดเกือบ 100 ไฟล์ และต้องเปลี่ยนฟอนท์ให้เป็น AngsanaUPC ด้วย 
 
ผมจะใช้ Late Binding เหมือนตัวอย่างที่ผมเคยให้ตัวอย่างไว้ในเว็บนี้ มันอาจจะไม่เรียก Word ตัวที่เปิดล่าสุดขึ้นมาได้ ซึ่งอาจเป็น Word 2000 ก็ได้ เพื่อลดความเสี่ยง และให้เกิดความมั่นใจว่า เราเปิดไฟล์ Word ด้วย Word 97 จริงๆ จึงต้องใช้การอ้างอิงถึง Word Object แบบ Early Binding แทนครับ 
 
ข้อดีของวิธีนี้คือ มันทำงานไวกว่า Late Binding แต่ข้อเสียคือ จะต้องตั้ง References ของ Microsoft Word 8.0 Object Libray ใน Access ก่อนที่เรียกใช้โค้ดแบบนี้ได้ครับ 
 
ตัวอย่างการใช้ Late Binding 
Dim objWord As Object 
Set objWord = CreateObject("Word.Application") 
 
ตัวอย่างการใช้ Early Binding 
Dim objWord As Word.Document 
Set objWord = CreateObject("Word.Document") 
 
การทำงานของโค้ดข้างล่าง มันจะค้นหาไฟล์ที่เป็นนามสกุล .Doc ในห้องเป้าหมาย แล้วเปิดไฟล์นั้นด้วย Word 97 แล้วเปลี่ยนฟอนท์เป็น AngsanaUPC แล้ว Save เป็นชื่อใหม่ โดยเอาชื่อเดิมมาต่อท้ายด้วย _97 แล้วเก็บไว้ในห้องข้างในอีกห้องหนึ่งซึ่งผมได้สร้างรอไว้แล้ว 
 
ลองดูตัวอย่างโค้ดข้างล่างครับ 
 
Private Function fGetFiles2() 
  
    Dim objFS As Object, objFolder As Object 
    Dim objFiles As Object, objF1 As Object 
    Dim strFolderPath As String, strDoc As String 
    Dim I As Integer, J As Integer 
      
    strFolderPath = "e:/fullpaper/oral/" 
    Set objFS = CreateObject("Scripting.FileSystemObject") 
    Set objFolder = objFS.GetFolder(strFolderPath) 
    Set objFiles = objFolder.files 
 
    For Each objF1 In objFiles 
        If Right(objF1.Name, 3) = "doc" Then 
            OpenDoc strFolderPath & objF1.Name, strFolderPath & "97/" & Left(objF1.Name, Len(objF1.Name) - 4) 
        End If 
    Next 
      
    Set objF1 = Nothing 
    Set objFiles = Nothing 
    Set objFolder = Nothing 
    Set objFS = Nothing 
   
End Function 
  
Function OpenDoc(strDocName As String, strName As String) 
'Dim objWord As Object 
'Set objWord = CreateObject("Word.Application") 
Dim objWord As Word.Document 
Set objWord = CreateObject("Word.Document") 
With objWord 
    .Application.Visible = False 
    .Application.Documents.Open FileName:=strDocName 
    .Application.Selection.WholeStory 
    .Application.Selection.Font.Name = "AngsanaUPC" 
    .Application.ActiveDocument.SaveAs FileName:=strName & "_97.doc", FileFormat:=0 
End With 
objWord.Application.Quit 
Set objWord = Nothing 
End Function 

2 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R00788
ถ้าอยากมี Help ในเรื่องการทำ Automation ของ Office XP ก็ไปเอามาอ่านได้ที่ http://download.microsoft.com/download/OfficeXPProf/Utility/1/NT5XP/EN-US/Xpautomation.exe (http://support.microsoft.com/default.aspx?scid=kb;en-us;Q302460) ซึ่งจะพูดถึง Late Binding และ Ealy Binding ไว้ด้วย หรือจะศึกษาโค้ดที่เป็น C++ หรือ VB ได้ที่ http://download.microsoft.com/download/office2000dev/sample/2/WIN98/EN-US/OFFAUTMN.EXE ส่วนโค้ดข้างบนยังไม่สมบูรณ์นะครับ เพราะมันจะเรียก Word ตัวที่ถูกเปิดล่าสุด ผมจะหาทางแก้ไข แล้วจะนำมาบอกอีกที่หนึ่งก็แล้วกัน
2 @R00828
ที่ http://support.microsoft.com/default.aspx?scid=kb;en-us;Q240794 จะมีโค้ดสำหรับหาว่าโปรแกรมของ Office ติดตั้งไว้ที่ห้องไหน การหาห้องที่ได้ติดตั้งโปรแกรมไว้ก็มีประโยชน์เหมือนกันนะครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0547s