Некоторым людям не нравится этот подход из-за «неуместного» использования обработки ошибок, но я думаю, что это считается приемлемым в VBA ... Альтернативный подход заключается в том, чтобы зацикливать все листы, пока вы не найдете совпадение.
Function SheetExists(shtName As String, Optional wb As Workbook) As Boolean
Dim sht As Worksheet
If wb Is Nothing Then Set wb = ThisWorkbook
On Error Resume Next
Set sht = wb.Sheets(shtName)
On Error GoTo 0
SheetExists = Not sht Is Nothing
End Function
Если вы используете Windows 2003 (обратите внимание, что Windows Server 2008 и более поздние версии не поддерживаются), вы можете использовать Windows Server 2003 Resource Kit, который содержит timeit.exe, который отображает подробную статистику выполнения. Вот пример, синхронизирующий команду "timeit -?":
C:\>timeit timeit -?
Invalid switch -?
Usage: TIMEIT [-f filename] [-a] [-c] [-i] [-d] [-s] [-t] [-k keyname | -r keyname] [-m mask] [commandline...]
where: -f specifies the name of the database file where TIMEIT
keeps a history of previous timings. Default is .\timeit.dat
-k specifies the keyname to use for this timing run
-r specifies the keyname to remove from the database. If
keyname is followed by a comma and a number then it will
remove the slowest (positive number) or fastest (negative)
times for that keyname.
-a specifies that timeit should display average of all timings
for the specified key.
-i specifies to ignore non-zero return codes from program
-d specifies to show detail for average
-s specifies to suppress system wide counters
-t specifies to tabular output
-c specifies to force a resort of the data base
-m specifies the processor affinity mask
Version Number: Windows NT 5.2 (Build 3790)
Exit Time: 7:38 am, Wednesday, April 15 2009
Elapsed Time: 0:00:00.000
Process Time: 0:00:00.015
System Calls: 731
Context Switches: 299
Page Faults: 515
Bytes Read: 0
Bytes Written: 0
Bytes Other: 298
Вы можете получить TimeIt в Windows 2003 Resource Kit. Скачать это здесь .
Если Вы имеете открытое командное окно и называете команды вручную, можно отобразить метку времени на каждой подсказке, например.
prompt $d $t $_$P$G
Это дает Вам что-то как:
23.03.2009 15:45:50,77
C:\>
Если у Вас есть маленький сценарий пакетной обработки, который выполняет Ваши команды, имейте пустую строку перед каждой командой, например.
(пустая строка)
myCommand.exe
(следующая пустая строка)
myCommand2.exe
Можно вычислить время выполнения для каждой команды к этому времени информация в подсказке. Лучшее должно было бы, вероятно, передать вывод по каналу к текстовому файлу для дальнейшего анализа:
MyBatchFile.bat > output.txt
Не совсем столь же изящный как часть функциональности на Unix, но создают командный файл, который похож:
@echo off
time < nul
yourexecutable.exe > c:\temp\output.txt
time < nul
rem on newer windows system you can try time /T
Это отобразит запуск и остановит времена как так:
The current time is: 10:31:57.92
Enter the new time:
The current time is: 10:32:05.94
Enter the new time:
@echo off
setlocal enableextensions
REM set start time env var
FOR /F "tokens=* USEBACKQ" %%F IN (`php -r "echo microtime(true);"`) DO ( SET start_time=%%F )
## PUT_HERE_THE_COMMAND_TO_RUN ##
REM echo elapsed time
php -r "echo 'elapsed: ' . (round(microtime(true) - trim(getenv('start_time')), 2)) . ' seconds' . mb_convert_encoding(' ', 'UTF-8', 'HTML-ENTITIES');"
никакая потребность в cygwin или не доверял утилитам. Usefull, когда PHP локально доступен
точность и выходной формат, можно легко настроить
, та же идея может быть портирована для PowerShell
В каталоге, где находится ваша программа, введите notepad mytimer.bat
, нажмите «Да», чтобы создать новый файл.
Вставьте приведенный ниже код, заменив YourApp.exe
с вашей программой, затем сохраните.
@echo off
дата / т
время / т
YourApp.exe
дата / т
время / т
Введите mytimer.bat
в командной строке и нажмите Enter.
Я использую бесплатное программное обеспечение под названием «GS Timer».
Просто создайте командный файл, подобный этому:
timer
yourapp.exe
timer /s
Если вам нужен набор значений времени, просто направьте вывод таймера / s в файл .txt.
Вы можете получить его здесь: Бесплатные утилиты DOS от Gammadyne
Разрешение составляет 0,1 секунды.
Хехе, самое простое решение может быть таким:
echo %time%
YourApp.exe
echo %time%
Это работает на каждой Windows из коробки.
В случае, если приложение использует вывод консоли, было бы удобно сохранить время запуска во временной переменной:
set startTime=%time%
YourApp.exe
echo Start Time: %startTime%
echo Finish Time: %time%
В Windows Server 2008 R2 я использую однострочник:
cmd /v:on /c "echo !TIME! & *mycommand* & echo !TIME!"
Пока mycommand не требует кавычек (что связано с обработкой кавычек cmd). Параметр / v: on
предназначен для того, чтобы два разных значения TIME оценивались независимо, а не один раз при выполнении команды.