• 締切済み

excelおよびwordでヘッダーにユーザー名が入るようにするには?

WindowsXP Pro+officeXPを使用しています。 excelおよびwordのヘッダーにWindowsログイン時の ログイン名が入るようにすることは出来ないのでしょうか? 共有する機密性の高いファイルを誰が印刷したか 分かるようにしたいのですが・・・

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

Private Sub Workbook_SheetActivate(ByVal Sh As Object) ActiveSheet.PageSetup.LeftHeader = Application.UserName End Sub ではどうでしょうか。エクセルで少数テスト済み。 ThisWorkbookのSheetActivateイベントに上記をコピペする。印刷する時はSheetをActivateすると思いますが 何か抜け道(もらしている点)があるかも知れず、自信なし。Printerオブジェクトを実行する時とかの、イベントが VBAにあればと思いますが・・。

  • Taketoshi
  • ベストアンサー率41% (23/56)
回答No.1

VBAが利用できると前提して回答します。 Windows APIも使っています。 ●ThisWorkbookに以下のコードをコピーします。 Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim strUserNameBuffer As String * UNLEN Dim lngUserNameLength As Long Dim lngResult As Long 'ユーザー名の長さを設定 lngUserNameLength = Len(strUserNameBuffer) 'ユーザー名を取得 lngResult = GetUserName(strUserNameBuffer, lngUserNameLength) With ActiveSheet.PageSetup .LeftHeader = "User : " & Left(strUserNameBuffer, InStr(strUserNameBuffer, vbNullChar) - 1) End With End Sub ●標準モジュールを作成し、以下のコードをコピーします。 ' ユーザー名を取得する関数の宣言 Declare Function GetUserName Lib "advapi32.dll" _ Alias "GetUserNameA" _ (ByVal lpBuffer As String, _ nSize As Long) As Long ' ユーザー名の長さを示す定数の宣言 Public Const UNLEN = 256 + 1 印刷時に、ヘッダの左に、 User : xxxxxxxx(←ログインユーザ名) が表示されます。

関連するQ&A