2016-11-30 241 views
1

下面的代碼完成後,應該得到一個數字的用戶輸入(這裏它的硬編碼爲50,並且不專注於特定的行 - 它不提供數據在);在工作表中查找特定的一行或多行,複製單詞文檔的空白模板,將數據按特定順序輸入單詞文檔,然後打印單詞文檔。從excel vba打印word文檔

下面的代碼是使用excel將位於C:\ original \ path \的word文檔複製到C:\ original \ path \目錄下。不幸的是,每次我嘗試在Microsoft Excel中運行時,Excel都會掛起,然後我必須重新啓動它。

那麼爲什麼?需要做什麼? Microsoft Word對象庫14在VBA編輯器中被引用。

Sub UpdateActionsRows() 

    Dim userInput As Long 
    userInput = 50 

' set up word application, document 
    Dim objWord As Word.Application 
    Dim objDoc As Document 

    Set objWord = CreateObject("Word.Application") 
    Set objDoc = objWord.Documents.Open("C:\original\path\here") 

    copyFile objDoc, userInput 

    objDoc.Close 
    objWord.Quit 
End Sub 

的CopyFile

Function copyFile(sourceFile As Document, inputRows As Long) 
    Dim fso As Object 
    Set fso = VBA.CreateObject("Scripting.FileSystemObject") 

    Dim targetFile As String 
    targetFile = "C:\original\file\there.docx" 
    fso.copyFile sourceFile, targetFile 

End Function 
+4

你有你想要複製的文件已經打開。您需要在打開前複製,或者使用'SaveAs'。 –

+0

@ WayneG.Dunn用7秒擊敗我:) – Vityata

+0

wayne G鄧恩有它正確。 – bdpolinsky

回答

0

嘗試是這樣的:

Sub UpdateActionsRows() 

    Dim userInput As Long 
    userInput = 50 

' set up word application, document 
    Dim objWord As Word.Application 
    Dim objDoc As Document 

    Set objWord = CreateObject("Word.Application") 
    Set objDoc = objWord.Documents.Open("C:\original\path\here") 
    objDoc.Close 

    FileCopy objDoc, "C:\original\path\there" 
    objWord.Quit 
End Sub 

我沒有測試它,它可以寫更好,但希望工程。作爲@Wayne G. Dunn,錯誤是因爲您正在嘗試複製已打開的文件。在這裏你可能會看到更多 - VBA to copy a file from one directory to another

+0

一旦你執行了'objDoc.Close',你將無法獲取'Name'屬性(或者更好的是,它的'FullName'屬性)以用於'FileCopy'命令。 – YowE3K