Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


43124 / 76732 ←次へ | 前へ→

【38665】Re:Excelファイルを誰かが開いているとき...
発言  Ned  - 06/6/8(木) 10:08 -

引用なし
パスワード
   ▼kouka さん:
こんにちは。
>何度『はい』を押しても出てきてしまうので
・・・ですよね。失礼致しました。

Sub Auto_Close()
  With ThisWorkbook
    If Not .ReadOnly Then
      SetAttr .FullName, vbNormal
      If MsgBox("保存しますか?", vbYesNo) = vbYes Then
        Application.EnableEvents = False
        .Save
        Application.EnableEvents = True
      Else
        .Saved = True
      End If
    End If
  End With
End Sub

これでどうでしょう。

でも、
>最初に開いた時に元ファイルを別名保存してテンポラリーファイル的な使い方をする。
な案。
'-------------------------------------------------------------------------------
Option Explicit
Private MyName As String 'これはセルに書込み、記録しておいたほうが良いかも
Private TmpName As String '〃(作業用ファイルで、どうせKillするので固定でいいかも)
'-------------------------------------------------------------------------------
Sub Auto_Open()
  Dim st As String
  Dim fn As Long
  fn = FreeFile
  With ThisWorkbook
    If .ReadOnly Then
      Open .Path & "\use.txt" For Input As #fn
      Input #fn, st
      Close #fn
      MsgBox st & " Open"
      .Close False
    Else
      Open .Path & "\use.txt" For Output As #fn
      Print #fn, Application.UserName
      Close #fn
      MyName = .FullName
      TmpName = .Path & "\$" & .Name
      Application.DisplayAlerts = False
      .SaveAs TmpName
      Application.DisplayAlerts = True
      SetAttr MyName, vbReadOnly
'      .Sheets("sheet1").Range("A1").Value = MyName
'      .Sheets("sheet1").Range("A2").Value = TmpName
    End If
  End With
End Sub
'-------------------------------------------------------------------------------
Sub Auto_Close()
  With ThisWorkbook
    If Not .ReadOnly Then
'      If IsEmpty(MyName) Then .Sheets("sheet1").Range("A1").Value
'      If IsEmpty(TmpName) Then .Sheets("sheet1").Range("A2").Value
      SetAttr MyName, vbNormal
      If MsgBox("元ファイルへ反映しますか?", vbYesNo) = vbYes Then
        Application.DisplayAlerts = False
        .SaveAs MyName
        Application.DisplayAlerts = True
      Else
        .Saved = True
        '現在開いているファイルを読み取り専用開いている事にする
        .ChangeFileAccess xlReadOnly
      End If
      On Error GoTo errLine
      Kill TmpName
    End If
  End With
  Exit Sub
'念の為
errLine:
  MsgBox "TEMPファイル:" & TmpName & "が削除できませんでした。確認してください。"
End Sub
'-------------------------------------------------------------------------------
1 hits

【38514】Excelファイルを誰かが開いているときは開けないようにする件。 kouka 06/6/5(月) 16:12 質問
【38518】Re:Excelファイルを誰かが開いているときは... Kein 06/6/5(月) 17:12 回答
【38534】Re:Excelファイルを誰かが開いているときは... kouka 06/6/6(火) 9:19 発言
【38585】Re:Excelファイルを誰かが開いているときは... kouka 06/6/6(火) 18:27 発言
【38597】Re:Excelファイルを誰かが開いているとき... Ned 06/6/7(水) 0:09 発言
【38598】Re:Excelファイルを誰かが開いているとき... Ned 06/6/7(水) 0:41 発言
【38610】Re:Excelファイルを誰かが開いているとき... Ned 06/6/7(水) 10:50 発言
【38653】Re:Excelファイルを誰かが開いているとき... 漂流民 06/6/7(水) 23:47 発言
【38671】Re:Excelファイルを誰かが開いているとき... Ned 06/6/8(木) 11:09 発言
【38662】Re:Excelファイルを誰かが開いているとき... kouka 06/6/8(木) 9:44 質問
【38665】Re:Excelファイルを誰かが開いているとき... Ned 06/6/8(木) 10:08 発言
【38685】Re:Excelファイルを誰かが開いているとき... Ned 06/6/8(木) 14:52 発言
【38740】Re:Excelファイルを誰かが開いているとき... kouka 06/6/9(金) 11:03 お礼

43124 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free