- 締切済み
ワ-クシ-トにエクセルブックを開いた回数を表示する
お世話になります。 ウィンドウズXP エクセル2007を使用しています。7枚シ-ト構成で1枚目に出席簿とシ-ト名を付け2枚目以降は1年生から6年生とシ-ト名を付しています。 ブック名は出席簿としてありますが、このブックを開いた回数をシ-ト1枚目セルB5に表示する方法を教えてください。 エクセル2003でのマクロ使用時にファイル・プロパティ・ユ-ザ-設定に表示する形は、こちらのブログで拝見させていただきましたが、エクセル2007使用時に特定のシ-トの特定セルにブックを開いた回数を表示する方法を教えてください。 お手数を掛けて申し訳ありませんが宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hallo-2007
- ベストアンサー率41% (888/2115)
目的に合うかどうかわかりませんが、もう少し進化したマクロを紹介しておきます。 VBエディターを起動したら Thisworkブック をクリックして Private Sub Workbook_Open() With Sheets("このファイルの使用状況Log") .Range("A65536").End(xlUp).Offset(1, 0).Value = Date .Range("B65536").End(xlUp).Offset(1, 0).Value = Time .Range("C65536").End(xlUp).Offset(1, 0).Value = Environ("COMPUTERNAME") .Range("D65536").End(xlUp).Offset(1, 0).Value = Environ("USERNAME") End With ThisWorkbook.Save End Sub をコピーして下さい。 そしてシートを追加して シート名を このファイルの使用状況Log としておき 1行目に 日付 時刻 PC名 ユーザー名 と入れて保存してください。 次に このファイルを開いたときに このシートに 何時、誰が開いたかの記録が残ります。 エクセルの場合、ファイルを保存せずに閉じられると記録ものこりませんので 開いたときに 一度 上書き保存 をマクロで実行させています。 うまく行きましたら、このシートごと非表示にして保護をかけておきます。 故意に編集できなくしておきます 必用であれば B5セルに COUNTA関数で データの件数を出しておけばよいでしょう。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルに慣れないのか、質問の記述方法に普通と違う点がある。VBAなど大丈夫ですか。 ーー 整理すると ブック 出席簿 1ブックだけ シート 上記ブックに 出席簿ー1年生ー2年生・・-6年生の7シート X枚目というのはあいまいでシートタブで表示順序は直ぐ変えられる。 がある。 このブックを開いた都度回数を出席シートのB5に表示する >シ-ト1枚目セルB5 とは出席簿シートですか?それなら出席簿シートのセルB5、と書けば良い。紛らわしい。 >マクロ使用時にファイル・プロパティ・ユ-ザ-設定に表示する形は この意味は良くわからない。このここのプロパティなどの意味はわかるが、何を言いたいのか。かくひつようなし。 >こちらのブログで拝見させていただきましたが この質問コーナーは「ブログ」では無いと思う。 >「特定のシ-トの特定セルにブックを開いた回数を表示する方法 これも前半に具体的に書いてあることで、「特定の」とかと、あとから総括して、書く必要がない。 また2007の場合もコードは変わらないと思いますが。 「Excel 2007 ではデフォルトで Visual Basic for Applications が無効に設定される 」(後述)ことに戸惑っているのかな? ーー エクセルVBAでブックを開いた都度行われるのは、WorkBook_Open そこで出席簿シートのB5の値に+1すれば良いと思います。 VBE画面で、ThisWorkbookをダブルクリックして右側の画面に出てきた左側の「General」の部分で「Workbook」を、右の「Declaration」部で「Open」を「選び Private Sub Workbook_Open() End Sub ガ出るが、その真中に Private Sub Workbook_Open() Worksheets("Sheet1").Range("B5") = Worksheets("Sheet1").Range("B5") + 1 End Sub のように1行入れる。 質問の場合は、出席簿シートなので Worksheets("出席簿").Range("B5") = Worksheets("出席簿").Range("B5") + 1 です ーーー プログラムでは、変数と言う内部メモリにつながるところのデータ(数)で 計算しますが、ブックを閉じると変数内容は消えてしまう。だからブックのシートや別のテキストファイルなどに(前回までの情報を)記憶させておかないといけない。 エクセルのシートのセルにデータ有りー>ブックを閉じるー>エクセル形式でー>ディスクにブックのセルデータや諸設定を保存 されるので、次回読み込んだ場合は、逆のプロセスでシートのセルに再現される。 ーー でもこんな質問は載った例は少ないと思うし、誰かがB4セルをいじくったら、狂ってしまうし、意味も無く開いたら+1されるし、と目的(質問異は書いてないが)に相応しいか、疑問に思う。 ーーーーー エクセル2007でVBAを使うセキュリティ関連のことは Googleででも「エクセル2007 VBA セキュリティ」で照会して http://support.microsoft.com/kb/919195/ja など2,3記事を読んでください。
お礼
エクセルに不慣れなため質問意図伝達不十分となり申し訳ございませんでした。 お陰様で所与の目的処理が実行出来るようになりました。 ありがとうございました。 拝
お礼
ありがとうございました。 頂戴いたしました形でシ-ト使用状況を作成し、誤謬発生防止と記録の確実性確保の手段となりました。 エクセルに不慣れなため手順確認に時間が掛かり、御礼を申し上げますのが遅くなりました。お許しください。 拝