Excel VBA質問箱 IV

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

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


2999 / 13644 ツリー ←次へ | 前へ→

【64838】重複起動を禁止するには shiroshiro 10/3/18(木) 11:59 質問[未読]
【64840】Re:重複起動を禁止するには Jaka 10/3/18(木) 13:09 発言[未読]
【64848】Re:重複起動を禁止するには よろずや 10/3/18(木) 21:35 回答[未読]
【64852】Re:重複起動を禁止するには teian 10/3/19(金) 8:47 回答[未読]

【64838】重複起動を禁止するには
質問  shiroshiro  - 10/3/18(木) 11:59 -

引用なし
パスワード
   社内のネットワーク上に置いているエクセルファイルを二人で共用しています。
このファイルを編集する際、マクロを有効/無効のウィンドウを表示しないように、VBScript Script Fileを置いてこれをダブルクリックすることで開いています。

作業はユーザーフォームへの入力で実施しており、当該ファイルの起動には、
Application.Visible = False
のコードが走るようにしています。

このとき、VBScript Script Fileを重複して開くと、読み取り専用であることに気づかず編集作業をしていまい、致命的なロスが生じてしまいます。

重複起動をしないコードの書き方をご教授くださればと思います。

【64840】Re:重複起動を禁止するには
発言  Jaka  - 10/3/18(木) 13:09 -

引用なし
パスワード
   考え方の参考になるかな?

On Error Resume Next
Set ExlApp = GetObject(, "EXCEL.Application" )
If ExlApp Is Nothing Then
  WScript.Echo "エクセルが起動してません。"
  WScript.Quit
Else
  'WScript.Echo "実行中のEXCEL. を使用します。"
End If

ExlApp.Visible = True
ExlApp.DisplayAlerts = False
ExlApp.Activate

Set Sh = ExlApp.Activesheet
If Sh is Nothing Then
  WScript.Echo "シートがないです。"
  WScript.Quit
End If
'WScript.Echo Sh.name

For i = 1 to 500
  Sh.Cells(i,2) = Sh.Cells(i,1) * 2
Next

Set Sh = Nothing
Set ExlApp = Nothing
WScript.Quit

【64848】Re:重複起動を禁止するには
回答  よろずや  - 10/3/18(木) 21:35 -

引用なし
パスワード
   ▼shiroshiro さん:
>社内のネットワーク上に置いているエクセルファイルを二人で共用しています。
>このファイルを編集する際、マクロを有効/無効のウィンドウを表示しないように、
>VBScript Script Fileを置いてこれをダブルクリックすることで開いています。

VBScriptでエクセルファイルを開いたときに、
開いたブックが読み取り専用だったらメッセージ表示後終了。

【64852】Re:重複起動を禁止するには
回答  teian  - 10/3/19(金) 8:47 -

引用なし
パスワード
   開いて読み取り専用かを確認する代案として、
FSOのMoveFileで、目的のExcelブックを同一フォルダー内への移動を試みて
エラーを起こすようなら既に誰かに使用されていると判断できるかもね。
そういった事象を起こすようなら起動を中止するってことで。

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