我試圖創建一個腳本將PDF轉換爲純文本,然後再複製純文本到Word。 (我們在工作的地方從頭開始重新格式化損壞的文檔。)除了一件事情之外,我有一個完美的腳本:當粘貼到Word中時,它不會粘貼整個文件。隨着更長的文件,我只獲得文本的一部分。使用VBS複製從記事本到Word
'string to hold file path
Dim strDMM
strDMM = "[path]"
'make this directory if it doesn't exits
On Error Resume Next
MkDir strDMM
On Error GoTo 0
'get the file name to process
Dim TheFile
TheFile = InputBox("What is the file name?" & chr(13) & chr(13) & "(Example: [name].pdf)", "Name of File")
'declare some acrobat variables
Dim AcroXApp
Dim AcroXAVDoc
Dim AcroXPDDoc
'open acrobat
Set AcroXApp = CreateObject("AcroExch.App")
AcroXApp.Hide
'open the document we want
Set AcroXAVDoc = CreateObject("AcroExch.AVDoc")
AcroXAVDoc.Open "[path to desktop]" & TheFile, "Acrobat" 'users are instructed to save to the Desktop for ease of access here
'make sure the acrobat window is active
AcroXAVDoc.BringToFront
'I don't know what this does. I copied it from code online.
Set AcroXPDDoc = AcroXAVDoc.GetPDDoc
'activate JavaScript commands w/Acrobat
Dim jsObj
Set jsObj = AcroXPDDoc.GetJSObject
'save the file as plain text
jsObj.SaveAs strDMM & "pdf-plain-text.txt", "com.adobe.acrobat.plain-text"
'close the file and exit acrobat
AcroXAVDoc.Close False
AcroXApp.Hide
AcroXApp.Exit
'declare constants for manipulating the text files
Const ForReading = 1
Const ForWriting = 2
'Create a File System Object
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
'read file and get text
dim objFile
set objFile=objFSO.OpenTextFile(strDMM & TheFile, ForReading)
Dim strText
strText=objFile.ReadAll
'Create a Word Object
Dim objWord
set objWord = CreateObject("Word.Application")
'make Word visible
With objWord
.Visible = True
End With
'Add method used to create a blank document
Dim objDoc
Set objDoc=objWord.Documents.Add()
'create a shorter variable to pass commands to Word
Dim objSelection
set objSelection=objWord.Selection
'type the read text into Word; this is the part that's failing
objSelection.TypeText strText
objFile.Close
我試過了多個文件,結果相同。有趣的是,它每次都從文件A粘貼相同的素材,但是當從文件B中複製時,它會粘貼不同數量的素材。換句話說,如果A在第一次運行中給了我8頁60頁,那麼每次我都會得到相同的8頁。文件B可能會給我14頁60,然後每次給我14頁。這隻會改變,如果我從.txt文件中刪除材料。如果我從A中刪除幾段,然後運行腳本,我可能會得到12頁。然後我每次都得到相同的12個。但是沒有任何模式可以預測它切斷的位置。
我找不到任何EOF字符,當我從記事本讀取和寫入記事本,整個事情是完全複製。問題在於轉移到Word的某處。
有什麼我失蹤了嗎? Word可以用TypeText編寫的字符串的大小是否有限制? (我認爲,如果是這樣的話,我不會得到不同長度的文件,對嗎?難道他們不應該停止所有在n個字符如果是這樣的限制?)
我讀過有關的其他庫,讓VBS與剪貼板一起工作,但我是一個完全noob,不知道這是一個更優雅的解決方案或如何使其工作。我也不確定在我的工作計算機上有沒有必要安裝這些庫。
任何幫助表示讚賞!
+1再次證明一個好的程序(大部分)是由你省略的代碼組成的。 –
哇!這麼快@ Ekkehard.Horner!謝謝你的提示! – tmoore82