2016-10-05 7 views
1

MACを使用していますが、ExcelワークシートからWord文書を印刷するマクロを作成しようとしています。ユーザーは単語の文書を見る必要はなく、印刷するだけで済みます。MACを使用して、Excelでマクロを使用してWord文書を印刷します。

このフォーラムで回答された以前の質問のいくつかを見て、自宅のPCで動作するコードを書くことができました。

しかし、私はファイルのパスとファイル名を変更し、コードを私の職場で使用しているMACにコピーしました。コードはもはや機能していないようです。 MACを使用するときにコードが異なる必要があるのだろうか?

私はMac 2011、バージョン14.6.8にMicrosoft Excelを使用しています。

ans = MsgBox(Prompt:="Document 1", Buttons:=vbYesNo, Title:="Print") 
If ans = vbYes Then 
    Dim objWord 
    Dim objDoc 
    Set objWord = CreateObject("Word.Application") 
    'Enter filename and path here 
    Set objDoc = objWord.Documents.Open("/Volumes/.../Document 1.docx") 
    objWord.Visible = False 
    objDoc.PrintOut 
    objWord.Quit 
End If 

時にはコードがCreateObject("Word.Application")で立ち往生、時にはコードは、私は、ファイルのパスとファイル名を書かれている場所を動けなくなります。

ファイルパスを正しく書いたとは必ずしも言えません。

ご協力いただければ幸いです。

答えて

0

ファイルはネットワーク上にありますか?

は、イミディエイトウィンドウでファイルのパスを取得するにはWordのVBEでそのコードを使用する:ファイルが存在する場合

Sub get_path() 
    Debug.Print ActiveDocument.Path 
End Sub 

は、Mac上でこの作業を行う方法がわからない(テストするには、この機能を試してみてください。.. 。):

Public Function File_Exist(sFilePath As String) As Boolean 
    Dim sProv As String 
    On Error GoTo ErrorHandler 
     sProv = Dir(sFilePath, vbDirectory) 

     File_Exist = (sProv <> "") 
    On Error GoTo 0 
    Exit Function 

ErrorHandler: 
    MsgBox Prompt:="Error on test file= " & sFilePath & vbCrLf & Err.Number & vbCrLf & Err.Description 
End Function 

そして、いくつかの改善を使用してコード:

ans = MsgBox(Prompt:="Document 1", Buttons:=vbYesNo, Title:="Print") 
If ans = vbYes Then 
    Dim objWord As Object 
    Dim objDoc As Object 
    Dim sFilePath As String 
    ''If the file is a network, you should start the path with // 
    sFilePath = "New_path_from_Word_immediate_window" 

    On Error Resume Next 
    Set objWord = GetObject(, "Word.Application") 
    If Err.Number <> 0 Then 
     Set objWord = CreateObject("Word.Application") 
    End If 
    On Error GoTo 0 


    objWord.Visible = False 
    'Enter filename and path here 
    'If File_Exist(sFilePath) Then 
     Set objDoc = objWord.Documents.Open(sFilePath) 
     objDoc.PrintOut 
     objDoc.Close 
    'Else 
     'MsgBox "File doesn't exist!" & vbCrLf & sFilePath, vbCritical + vbOKOnly 
    'End If 

    objWord.Quit 
End If 
+0

は、ご返信いただきありがとうございます。 はい、ファイルはネットワーク上にあります。 申し訳ありませんVBAを初めて使いましたので、両方のコードを試しましたが、いずれかのコードを試すことはできません。 ファイルパスの先頭に「//」を追加しました。私のファイルパスの全長は160文字です - それが問題の原因かどうかわかりません。 "コンパイルエラー:ユーザー定義型が定義されていません"というコードの2番目のコードを実行するとエラーメッセージが表示され、コードが強調表示されます。 objWordとしてWord.Application アイデアはありますか? – Hlrhodes

+0

ファイルが存在するかファイルパスが正しいかをテストするコードの最初の部分については、「コンパイルエラー:期待:式」というエラーメッセージが表示されます – Hlrhodes

+0

@Hlrhodes:長さは255文字未満の問題ではありません。編集(あなたがそれを知らない場合は、Googleの直接のウィンドウ)。私は 'Word.App-Doc'とファイルが存在するかどうかを確認するテストを削除しました。これはそのように動作するはずです。 Macでのファイルの存在をテストする方法がわからない:/ – R3uK

関連する問題