![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
No.1ベストアンサー
- 回答日時:
アイデアはいくつか持っています。
2018/1/1 ピッタリと行くかは別ですが、以下の場合は、2017年の12/29が最後の日とみなされて、開いて、閉めれば、パスワードを掛けられてしまう、という方法です。
正月すぎまでファイルを開かなければ、場合によっては、1月1日以降にパスワードが掛けられてしまうかもしれません。
1月1日に自動的に切り替えるには、外部プログラムとタイマーの登録が必要です。
'//ThisWorkbook モジュール
Option Explicit
Const mPSW As String ="abc" 'パスワード
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Const XLMacro As Long = 52
Application.DisplayAlerts = False
''12月29日7時55分以降は、プロテクトを掛けて保存します。
If Now > DateSerial(2017, 12, 29) + TimeSerial(0, 7, 55) Then
ThisWorkbook.SaveAs ThisWorkbook.Name, XLMacro, mPSW, mPSW
End If
Application.DisplayAlerts = True
End Sub
//
スタンドアロンで、もっと凝った作りをさせることも可能ですが、要求に応じたものを作って差し上げるというわけにはいかないことはご承知ください。あくまでも、ヒントを与えているだけだと思ってください。
なお、OneDrive for Business(Office 365 Premium) に、期限付きファイルというものがあります。
もうひとつは、Microsoft では、ARM(Azure Right Management)
https://products.office.com/ja-jp/business/micro …
という方法もあります。
お礼が遅くなり申し訳ございません、お早い回答ありがとうございます。参考にさせていただいてプログラムを作っていきます。ありがとうございました。
No.3
- 回答日時:
少し、本格的なものを作ってみました。
ご質問者さんがコメントを残していませんし、それを書いても、たぶん、評価は受けないとは思います。VBSですが、暗号化が可能です。Batchとは違うものです。Batchは、1回キリです。
もうこれは、マクロではなく、日時が来たら実行に移すマクロ・ウィルスと同等です。
MsgBox の所がコメントブロックになっているのは、実際は人知れず行うことになるからです。
この有効期限は、標準は3日ですから、仕事始めが、1月4日として6日までに実行されます。コントロールパネルの「タスクのスケジュール」に設定されていますから、用が済んだら、削除したほうがよいでしょう。拡張子は、xls, xlsx, xlsm の3つになっています。それ以外のものは、何もしないようになっています。(MsgBox でコメントを出しません)
必要なら、コードの中のシングルコーテーションを外してください。
'MsgBox "unknow Extention " & Ext
なるべくわかっている人にお使い願いたいです。
#1で書いたARMが標準的です。
'-----------------------
'//XlLock.Vbs
Dim objFS
Dim objFile
Const PSW ="xxx"
Const mPATH ="C:\Temp\"
Const oFNAME ="Test1m.xlsm"
Const fDFLT =51
Const fNML =-4143
Const fMCR= 52
Dim BaseName
Dim Ext, xt
Dim flg
'On Error Resume Next
Set objFS = CreateObject("Scripting.Filesystemobject")
If objFS.FileExists(mPATH &oFNAME)=False Then
' MsgBox "Not found " & oname & vbCrLf & "Please Check again!"
WScript.Quit
End If
BaseName= objFS.GetBaseName(mPATH & oFNAME)
Ext = objFS.GetExtensionName(mPATH & oFNAME)
If LCase(Ext) = "xls" Then
xt =fNML
ElseIf LCase(Ext) = "xlsx" Then
xt = fDFLT
ElseIf LCase(Ext) = "xlsm" Then
xt = fMCR
Else
'MsgBox "unknow Extention " & Ext
Wscript.Quit
End If
Dim xlApp
Dim wb
Set xlApp =CreateObject("Excel.Application")
''xlApp.visible =True
On Error Resume Next
Set wb=xlApp.Workbooks.Open(mPATH & oFNAME,0,0,,"","")
On Error Goto 0
If IsObject(wb) Then
wb.Protect PSW
WScript.Sleep 1000
xlApp.DisplayAlerts= False
wb.SaveAs mPATH & oFNAME,xt,PSW,PSW
xlApp.DisplayAlerts= True
wb.Close False
Call ErrEndProc(False)
Else
Call ErrEndProc(True)
End If
Set xlApp = Nothing
WScript.Quit
Function ErrEndProc(flg)
Set wb = Nothing
xlApp.Quit
Set xlApp = Nothing
If flg Then
'WScript.Echo "実行は失敗しました " & Err.Description
Else
'WScript.Echo "成功しました。"
End If
WScript.Quit
End Function
'--------------------------切り取り線-------
rem xlLock.vbs と一緒にしておいておくとよい。
rem 場所は適当に書き換えてください。
rem'----xlLock.bat---------------------
@echo off
schtasks /create /tn ChngeLock /sd 2018/01/04 /st 00:00:05 /tr "C:\Users\[YourID]\Documents\xlLock.vbs" /sc once
echo on
本格的なプログラムを書いていただきありがとうございます。今後勉強してこのような高度なプログラムが使えるようになっていきたいと思います。ありがとうございました。
No.2
- 回答日時:
Workbook_Openイベントプロシジャに仕込んでみました。
このマクロは、翌年以降かつPW未設定の場合にPWを設定して保存します。その後、再オープンすることにより、PWの入力が要求されるようになります。
Workbook_Openイベントプロシジャで自分自身を再オープンすることができるのか疑問だったのですが、とりあえず動作したので良しとしました。
Private Sub Workbook_Open()
Dim yyyy As Integer
With ThisWorkbook
yyyy = Split(.Name, "年", 2)(0)
If yyyy < Year(Now) And .HasPassword = False Then
.Password = "abc"
.Save
Workbooks.Open .FullName
End If
End With
End Sub
【注意点】とりあえず、ブック名から年を特定していますが、例えば「201x年」みたいな想定外の名前だと異常終了します。この辺はご自分でご検討ください。
お早い遅くなり申し訳ございません。お早いご回答ありがとうございます。シンプルで分かりやすいプログラムをご教示いただきましたので参考にさせていただきます。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) エクセルのマクロ設定 1 2023/04/05 19:37
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- Excel(エクセル) マクロの保存先、開いてるすべてのブックの意味 エクセルを開き、表示→マクロ→マクロの表示と順番に開く 3 2022/06/25 17:52
- Excel(エクセル) エクセルについて 8 2023/02/11 07:36
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- Visual Basic(VBA) 列 A に同じ日が2つが必要です。 1 2023/03/28 07:25
- Excel(エクセル) 記録マクロのみでできますか? 7 2022/08/07 20:38
- その他(Microsoft Office) エクセル、ワードをこれからも使うしかないのですか? 3 2023/06/02 07:39
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
コンビニでおにぎりを買うときのスタメンはどの具?
コンビニでおにぎりを買うとき、何の具材を選ぶことが多いですか?
-
あなたの人生で一番ピンチに陥った瞬間は?
これまでの人生で今振り返ると「あの時、1番ピンチだったなぁ...」という瞬間はありますか?
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
タイムマクロ内にタイムマクロは可能ですか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAを一度起動するとずっと出て...
-
excelが別プロセスで起動してし...
-
コピーしたファイルのマクロを...
-
エクセル2013vbaで、見えない名...
-
別のパソコンでエクセルのマク...
-
Excelマクロ ファイル名が変わ...
-
エクセル終了時の保存確認メッ...
-
【マクロ】エラーが発生⇒実行時...
-
昨日まで動いていたエクセルの...
-
Excel2010 PERSONAL.xlsbの挙動...
-
excelファイルに使われているVB...
-
EXCEL マクロ クリップボードク...
-
ワードを開いた時にメッセージ...
-
マクロを消すマクロは不可能?
-
Excelが勝手にシート移動してし...
-
EXCELマクロコードを、それを含...
-
Word用のマクロが急に働かなく...
-
マクロを設定したのに、拡張子...
-
エクセルファイルを自身のファ...
-
エクセルで印刷する方法 エクセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
昨日まで動いていたエクセルの...
-
VBAを一度起動するとずっと出て...
-
エクセル終了時の保存確認メッ...
-
コピーしたファイルのマクロを...
-
別のパソコンでエクセルのマク...
-
VBA マクロ実行時エラー’1004Ra...
-
excelファイルに使われているVB...
-
マクロを消すマクロは不可能?
-
エクセルマクロ実行中に別ファ...
-
EXCEL マクロ クリップボードク...
-
アクセスでファイルを開いたと...
-
【マクロ】エラーが発生⇒実行時...
-
Excelマクロ ファイル名が変わ...
-
Excelが勝手にシート移動してし...
-
エクセル2013vbaで、見えない名...
-
エクセルファイルを自身のファ...
-
Excel2010 PERSONAL.xlsbの挙動...
-
マクロを設定したのに、拡張子...
-
excelでpersonal.xlsを常に開く...
-
excelが別プロセスで起動してし...
おすすめ情報