Ваш код не похож на то, что вы описываете. Приведенный ниже код должен отображать «Тест» MsgBox
при открытии рабочих книг, соответствующих правилу запуска с «Текущий утвержденный»
'This Macro will run whenever an Excel Workbooks is opened
Private Sub MonitorApp_WorkbookOpen(ByVal Wb As Workbook)
Dim cText As String
cText = "Current Approved"
If UCase(Left(Wb.Name, Len(cText))) = UCase(cText) Then
' Wb2.Activate
MsgBox "Test"
End If
End Sub
Вы могли попробовать вариант php скопления (http://www.php.net/flock)
Я предположил бы что-то подобное (это предполагает, что файл /tmp/counter.txt уже существует и имеет счетчик в файле):
<?php
$fp = fopen("/tmp/counter.txt", "r+");
echo "Attempt to lock\n";
if (flock($fp, LOCK_EX)) {
echo "Locked\n";
// Read current value of the counter and increment
$cntr = fread($fp, 80);
$cntr = intval($cntr) + 1;
// Pause to prove that race condition doesn't exist
sleep(5);
// Write new value to the file
ftruncate($fp, 0);
fseek($fp, 0, SEEK_SET);
fwrite($fp, $cntr);
flock($fp, LOCK_UN); // release the lock
fclose($fp);
}
?>
Скопление PHP () функция является маршрутом для движения. Однако необходимо удостовериться, что все доступы к файлу защищены вызовом для скапливания () сначала. PHP не проверит, заблокирован ли файл, если Вы явно не выполняете вызов, чтобы сделать так.
Понятие фактически идентично как со взаимными исключениями (защищающий совместно используемые ресурсы, и др.), но достаточно важно перенести особое внимание.