[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Excelファイルの自動クローズ処理』(まお)
共有のExcelファイルをしており誰かが開いて離席しているせいで入力ができないことがあります。
対策としてそのファイルを開き一定時間操作がされなかった場合には自動で
ファイルを閉じてしまいたいのですが方法がわかりません。
どなたか力を貸していただけないでしょうか?
よろしくお願いします。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
↑この設定をしたらいかがでしょう?
(まっつわん) 2018/06/06(水) 19:44
別案として、テンポラリファイルから作成者を表示するマクロを書いてみました。更新日時が古いものが表示された場合、それは開きっぱなしで回線切断した跡なので、消しても構わないでしょう。 当日のものがあれば、利用者が判れば、直接ブックを閉じるように依頼すれば良いですよね。
ちなみに、テンポラリファイルにはシステム属性が付いているので、マクロからは自動削除できないので、手作業で削除する必要があります。 開いた当人なら、ブックを閉じるだけですが。
Sub test() Const cPATH = "C:\tmp\" Dim F1 As Integer Dim cFiles As Variant Dim cw As String Dim i As Long Dim j As Long Dim iw As Long Dim iR As Long Dim iEr As Long Dim iLen As Long Dim bw() As Byte Dim bName() As Byte
Application.ScreenUpdating = False Cells.ClearContents Range("A1:D1") = Array("フルパス", "ファイル名", "更新日時", "利用者") iR = 2
cFiles = Split(CreateObject("WScript.Shell").Exec("CMD /C DIR /A/B/S """ & cPATH & "~$*.*""").StdOut().ReadAll(), vbNewLine)
For i = 0 To UBound(cFiles) - 1 iEr = 0 On Error Resume Next iLen = FileLen(cFiles(i)) iEr = Err.Number On Error GoTo 0 If iEr = 0 And 0 < iLen Then ReDim bw(iLen - 1) F1 = FreeFile iEr = 0 On Error Resume Next Open cFiles(i) For Binary As #F1 iEr = Err.Number If iEr = 0 Then Get #F1, , bw iEr = Err.Number End If Close #F1 On Error GoTo 0
If iEr = 0 Then cw = "" ReDim bName(bw(0) - 1) For j = 1 To bw(0) bName(j - 1) = bw(j) Next j Cells(iR, "A").Value = cFiles(i) Cells(iR, "B").Value = Mid(cFiles(i), InStrRev(cFiles(i), "\") + 3) Cells(iR, "C").Value = FileDateTime(cFiles(i)) Cells(iR, "D").Value = StrConv(bName, vbUnicode) iR = iR + 1 End If Else Cells(iR, "A").Value = cFiles(i) Cells(iR, "B").Value = Mid(cFiles(i), InStrRev(cFiles(i), "\") + 3) On Error Resume Next Cells(iR, "C").Value = FileDateTime(cFiles(i)) On Error GoTo 0 iR = iR + 1 End If Next i
Columns("A:A").ColumnWidth = 2 Columns("B:D").AutoFit Application.ScreenUpdating = True End Sub (???) 2018/06/07(木) 09:34
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.