ステファノは会社で問題を抱えており、サーバーから自分のコンピューターにワークブックをコピーし、ワークブックに変更を加えてから、ワークブックを印刷することがよくあります。彼は、元のワークブックのみを印刷できるように強制したいので、ワークブックがサーバー上のものでない限り、印刷を禁止する方法があるかどうか疑問に思います。

Wordでこれを行うネイティブの方法はありません。必要に応じて、次の2つのことを実行するマクロを作成できます。

。現在のドキュメントのパスを調べます。パスがサーバーのパス以外の場合は、印刷を禁止してください

このようなマクロの例を次に示します。この特定のバージョンをThisWorkbookモジュールに配置する必要があります。ユーザーが印刷を選択するたびに自動的に実行されます。

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim sFile As String

sFile = "\\Server.name\folder\path\My file name.xlsm"



If ThisWorkbook.FullName <>  sFile Then         MsgBox "Printing only possible with server copy"

Cancel = True     End If End Sub

sFile変数は、ブックへのフルパス(ブックを会社のサーバー上のどこに配置するか)を含むように設定されていることに注意してください。現在のブックの名前がこれと一致しない場合、印刷は無効になります。

このタイプのマクロには潜在的な問題があり、ファイルへのパスに関係しています。サーバーのパスは、ユーザーごとに異なる可能性があります。サンプルマクロは、UNC(Universal Naming Convention)を含むパスをチェックしますが、すべてのパスがこのように機能するとは限りません。たとえば、ユーザーはサーバー上のフォルダーをドライブ文字にマップしている場合があります。あるシステムではパスはg:/ myserver / myfolder /であり、別のシステムではz:/ myserver / myfolder /である可能性があります。

マクロはこれを確実に補正することはできません。

あなたは間違いなくローテクなアプローチでこれを回避することができるかもしれません。まず、小さなテキストファイル(メモ帳で作成)をサーバー上のワークブックと同じフォルダーに配置します。テキストファイルに何が含まれているかはそれほど重要ではありません。次に、このマクロをThisWorkbookモジュールに追加します。

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim sPath As String     Dim sFile As String

sPath = ThisWorkbook.Path     sFile = sPath & "\" & "TestFile.txt"



If Dir(sFile) = "" Then         MsgBox "Printing only possible with server copy"

Cancel = True     End If End Sub

マクロが行うことは、現在開いているブックのパスを決定することです。次に、これは、ブックと同じフォルダーに配置した小さなテキストファイルの名前に追加されます。 (この場合、このファイルにTestFile.txtという名前を付けました。)次に、Dirコマンドを使用して、ファイルが存在するかどうかを確認します。存在しない場合は、印刷をキャンセルします。

より包括的なソリューションは、MicrosoftがIRM(Information Rights Management)と呼んでいるものを使用することかもしれません。このソリューションは、企業環境での使用に最適であり、ドキュメントで人々ができることとできないことを制御できます。 IRMについて学び始めるのに良い場所はここにあります:

https://support.office.com/en-us/article/information-rights-management-in-office-c7a70797-6b1e-493f-acf7-92a39b85e30c

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13526)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。