[[20100310103521]] 『ヘッダーに印刷者を表示させる方法はありますか?』(ygg) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ヘッダーに印刷者を表示させる方法はありますか?』(ygg)

<環境>
 EXCELのバージョンは2003で、OSはWindowsXPです。

<教えて頂きたいこと1>
 ヘッダーに印刷日時を入れることは分かったのですが、ここに印刷者も
 いれたいと思っています。
 例えば、「ツール」メニューの「オプション」の「全般」タグの「ユーザー
 名」を表示する関数はありますでしょうか?

<教えて頂きたいこと2>
 上の1の内容に加え、ネットワークにてActiveDirectoryドメインにて
 ユーザー管理をしておりますが、このログイン時のユーザーアカウント
 もしくはアカウントの表示名を、ヘッダーに入れることはできますで
 しょうか?

よろしくお願いいたします。


 標準モジュールに

  Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
                           (ByVal lpBuffer As String, nSize As Long) As Long

 Thisworkbookモジュールに

  Private Sub Workbook_BeforePrint(Cancel As Boolean)
  Dim strNmBuf  As String * 256
  Dim NetUserNm   As String
  Dim ExcelUserNm As String
  GetUserName strNmBuf, 256
  NetUserNm = Left$(strNmBuf, InStr(strNmBuf, vbNullChar) - 1)
  ExcelUserNm = Application.UserName
  For Each ws In ActiveWindow.SelectedSheets
    ws.PageSetup.RightHeader = "Login :" & NetUserNm & vbLf & _
                               "印刷者:" & ExcelUserNm
  Next ws
  End Sub

 こんな感じで合ってますか?
 (momo)

ご連絡ありがとうございます。
関数では難しいということですね。

VBについては初心者同様でして、標準モジュールとThisworkbookモジュールに貼り付けることは
できましたが、その後、ヘッダーにもってくるまではどのようにすれば良いのでしょうか?

教えていただけると有難いです。

(ygg)


 >関数では難しいということですね。

 関数では無理だと思います。
 Excelのユーザー名はもしかしたらExcel4マクロと名前定義などで出来るのかもしれませんが
 今後の事を考えるとVBAで処理したほうが無難かと思います。

 >ヘッダーにもってくるまではどのようにすれば良いのでしょうか?

 Private Sub Workbook_BeforePrint(Cancel As Boolean)
 という印刷前に起動するイベントを使っていますので
 印刷や印刷プレビューをすると自動的にヘッダーに設定します。

 (momo)

ご連絡ありがとうございます。

印刷を実行しようとすると、次のコンパイルエラーが出てしまいます。

GetUserNameが反転され、SubまたはFunctionが定義されていません。

何度もすみませんが、構文に誤りがあるのでしょうか?

宜しくお願いします。

(ygg)


 >標準モジュールに
 > Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
                           (ByVal lpBuffer As String, nSize As Long) As Long

 ↑は、ちゃんと標準モジュールに入っていますか?
 (momo)

何度もすみません。

標準モジュールのModule1に入っております。

(ygg)


 コードは何も変更せずに、そのまま貼り付けてますよね?

 あとは、C\WINDOWS\system32のフォルダの中にadvapi32.dllはありますか?

 (momo)すみませんが今日は時間的にこれが最後のレスになります。

ご連絡ありがとうございます。

advapi32.dllはあります。

もう1度、最初からやってみます。

また、明日確認してから書き込みます。

何度も迅速なレスありがとうございます。

(ygg)


本日、再度確認しましたが同様の現象にてエラーが発生してしまいます。
ところが、別のPCで確認したところ正常に動作しましたので、私のPCが
何かおかしいのではないかと思います。

なお、分かる範囲で結構です。もう1点、Loginには、ネットワークにログイン
するアカウントが正常に表示されました。(ありがとうございます。)

このアカウントですが、ActiveDirectory上で登録されている表示名を
表示することはできないでしょうか?

何度もすみませんが、もう1度お願いします。

(ygg)


 ActiveDirectoryはあまり詳しくないのですが、例えば以下のコードで必要な情報は得られますか?
 環境が無いのでテストも出来ず・・・^^;

  Sub GetCurrentUser()
  Set objSysInfo = CreateObject("ADSystemInfo")
  strUser = objSysInfo.UserName
  Set objUser = GetObject("LDAP://" & strUser)
  MsgBox objUser.samaccountname & vbLf & _
         objUser.displayName
  End Sub

 (momo)

ADの表示名もきちんと表示されました。

本当にいろいろとありがとうございました。
助かりました。

(ygg)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.