2016-11-30 15 views
1

次のコードは、終了時に、数字(ここでは50にハードコードされ、特定の行にはフォーカスしません)のユーザー入力を取得するはずです。に);シート内のその特定の行を調べ、単語文書の空白のテンプレートをコピーし、そのデータを特定の順序で単語文書に送り、次に単語文書を印刷する。excel vbaからワードドキュメントを印刷

以下のコードは、Excelを使用してC:\ original \ path \にある単語文書をC:\ original \ path \にコピーしています。残念ながら、私はExcelでこれを実行しようとするたびに、Excelがハングし、私はそれを再起動する必要があります。

なぜですか?何をする必要がありますか? Microsoftワードオブジェクトライブラリ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") 
    objDoc.Close 

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

私はそれをテストしていないと、それはより良い書き込むことができますが、うまくいけば動作します:

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 

コピーファイル

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 dunnは正しいですか? – bdpolinsky

答えて

0

すると、このような何かを試してみてください。 @Wayne G. Dunnのように、開いているファイルをコピーしようとしているためにエラーが発生します。ここにあなたがもっと見るかもしれません - VBA to copy a file from one directory to another

+0

'objDoc.Close'を実行すると、 'FileCopy'コマンドで使用するために' Name'プロパティ(または 'FullName'プロパティ)を取得してください。 – YowE3K