dポイントプレゼントキャンペーン実施中!

WindowsXP Pro+officeXPを使用しています。
excelおよびwordのヘッダーにWindowsログイン時の
ログイン名が入るようにすることは出来ないのでしょうか?

共有する機密性の高いファイルを誰が印刷したか
分かるようにしたいのですが・・・

A 回答 (2件)

Private Sub Workbook_SheetActivate(ByVal Sh As Object)


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

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(←ログインユーザ名)
が表示されます。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!