Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101342
  • 博文数量: 20
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-06 11:04
文章分类

全部博文(20)

文章存档

2011年(1)

2010年(14)

2009年(4)

2008年(1)

我的朋友

分类: WINDOWS

2010-08-30 15:30:49

閲覧履歴

さん

【修正】コードの見直し及び仕様変更をしました。
エクセルマクロです。
まず、そのBookにシートを追加してシート名を「閲覧履歴」とします。
次にVBエディタを開きプロジェクトエクスプローラ(プロジェクトエクスプローラが表示されていない時はメニューの表示より選択)で現在作業している BookのThisWorkbookをダブルクリックしBookのコードウィンドウを開き、後述のコードを記述またはコピペ。記述が終わったらVBエディ タを右上の☒で閉じれば完了です。

最初のWorkbook_Open部分のコードは、このBookを開いた時に自動実行される処理で、開いた日時とログインユーザー名が先ほど作成した「閲覧履歴」シートに順次書き込まれていきます。
ちなみにこのシートはパスワード「password」(コードの該当部分を書き換えることで変更可)で保護されています。
最後のWorkbook_BeforeClose部分のコードは、このBookを閉じようとしたとき保存を上書き確認なしに実行する処理です。

注1)さらなる機密保持のためにはVBエディタのメニューバーのツールバー→VBAProjectのプロパティでパスワード付きの保護も設定できます。
注2)マクロ無効で開かれた場合は保護のかかった「閲覧履歴」以外は表示されません。

───────────これより下がコードです───────────

Private Sub Workbook_Open()
For i = 1 To Worksheets.Count
Worksheets(i).Visible = xlSheetVisible
Next i
Worksheets("閲覧履歴").Activate
ActiveSheet.Unprotect "password"
閲覧者 = Application.UserName
i = 1
Do
With ActiveSheet
If .Cells(i, 1) = "" Then
.Cells(i, 1).Value = Now
.Cells(i, 2).Value = 閲覧者
Exit Do
End If
End With
i = i + 1
Loop
With ActiveSheet
.Protect "password", DrawingObjects:=True, Contents:=True, Scenarios:=True
.EnableSelection = xlNoSelection
End With
Worksheets("Sheet1").Activate
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("閲覧履歴").Visible = xlSheetVisible
For i = 1 To Worksheets.Count
With Worksheets(i)
If .Name <> "閲覧履歴" Then .Visible = xlSheetVeryHidden
End With
Next i
Worksheets("閲覧履歴").Activate
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub

阅读(731) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~