カテゴリー
SugiBlog Webデザイナー・プログラマーのためのお役立ちTips

ACCESSからExcelファイルが開いているか調べる

ACCESSからオートメーションでExcelを開き、WorkbooksReadOnlyプロパティを取得して現在開かれているかどうかを判別します。

まずは変数を宣言

Dim xlApp  As Object
Dim xlBook As Object
Dim FileName As String

ファイルを指定します。
Environ("USERPROFILE")はWindowsの環境変数でC:\Users\ユーザー名というパスを返します。

FileName = Environ("USERPROFILE") & "\デスクトップ\sample.xls"

Excelのオートメーションオブジェクトを作成します。

Set xlApp   = CreateObject("Excel.Application")
Set xlBook  = xlApp.Workbooks.Open(FileName)

開かれたワークブックのReadOnlyプロパティがtrueなら誰かがそのファイルを開いている、ということになります。

If xlBook.ReadOnly Then
    MsgBox "開いています。"
Else
    MsgBox "開いていません。"
End If

ワークブックを閉じてExcelを終了します。

xlBook.Close
xlApp.Application.Quit

最後にオブジェクトの破棄も忘れずに

Set xlBook = Nothing
Set xlApp = Nothing
35,254 views

apache 起動スクリプト

#!/bin/sh
# httpd: /usr/local/apache2
. /etc/rc.d/init.d/functions

[ -f /usr/local/apache2/bin/apachectl ] || exit 0

case "$1" in
	start)

		# Start daemons.

		/usr/local/apache2/bin/apachectl start

		if [ $? = 0 ] ; then
			echo "httpd starting:" `echo_success`
		else
			echo "httpd starting:" `echo_failure`
		fi

		;;

	stop)

		# Stop daemons.

		/usr/local/apache2/bin/apachectl stop

		if [ $? = 0 ] ; then
			echo "stopping httpd:" `echo_success`
		else
			echo "stopping httpd:" `echo_failure`
		fi

		;;

	restart)

		$0 stop
		$0 start
		;;

	configtest)

		#httpd.conf test
		/usr/local/apache2/bin/apachectl configtest
		;;

	*)

		echo "Usage: `basename $0` {start|stop|restart}" >&2
		exit 64
		;;
esac

exit 0
2,743 views

VBA DAOでカレントレコードの位置を取得・設定する

帳票フォームでカレントレコードの位置を取得・設定できます。
レコードを削除してその位置に戻りたい場合などに便利。

Dim rst As Object
Dim i As Integer

Set rst = Me.Recordset

'カレントレコードの位置を変数に代入(返り値:長整数型)
i = rst.AbsolutePosition

'カレントレコードを1つ先に移動させる
rst.AbsolutePosition = i + 1

Set rst = Nothing

相対位置を取得するPercentPositionというプロパティもあります。
この場合、全体を100とした浮動小数点型が返ります。

29,353 views

VBA DAOでレコード件数の取得

DAOでレコード件数を取得するには、一度MoveLastメソッドを実行しないといけないようです。
※DAO Object Libraryは参照なし

Dim rst As Object

Set rst = Me.Recordset

rst.MoveLast
MsgBox "レコード件数:" & rst.RecordCount

Set rst = Nothing
8,706 views

qmailの起動スクリプト

#!/bin/sh
# qmail: /var/qmail
. /etc/rc.d/init.d/functions

[ -f /var/qmail/rc ] || exit 0

case "$1" in
	start)

		# Start daemons.

		echo "Starting qmail."
		csh -cf '/var/qmail/rc &'

		# Starting tcpserver with pop3d
		/usr/local/bin/tcpserver -R 0 110 /var/qmail/bin/qmail-popup \
		mail.example.jp \
		/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2&>1 \
		| /var/qmail/bin/splogger pop3d &

		if [ $? = 0 ] ; then
			echo "pop3d starting:" `echo_success`
		else
			echo "pop3d starting:" `echo_failure`
		fi

		# Starting tcpserver with smtpd
		/usr/local/bin/tcpserver -v -x /home/vpopmail/etc/tcp.smtp.cdb \
		-c 100 -u qmaild -g nofiles \
		0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd &

		/usr/local/bin/tcpserver -v -x /home/vpopmail/etc/tcp.smtp.cdb \
		-c 100 -u qmaild -g nofiles \
		0 587 /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd &

		if [ $? = 0 ] ; then
			echo "smtpd starting:" `echo_success`
		else
			echo "smtpd starting:" `echo_failure`
		fi

		touch /var/lock/subsys/qmaild
		;;

	stop)

		# Stop daemons.
		echo "Shutting down qmail."

		killall -g qmail-send
		if [ $? = 0 ] ; then
			echo "stopping smtpd:" `echo_success`
		else
			echo "stopping smtpd:" `echo_failure`
		fi

		killall -g tcpserver

		if [ $? = 0 ] ; then
			echo "stopping pop3d:" `echo_success`
		else
			echo "stopping pop3d:" `echo_failure`
		fi

		rm -f /var/lock/subsys/qmaild
		;;

	restart)

		$0 stop
		$0 start
		;;

	*)

		echo "Usage: `basename $0` {start|stop|restart}" >&2
		exit 64
		;;
esac

exit 0
2,821 views