May 29, 2006
VBA 定期的にデータ取得
ある一定の間隔ごとにSheet1のE21を”値”と
してSheet2へ取得・記録するVBAです。
-----
Private Sub CommandButton1_Click()
Dim Cnt As Interior
'繰り返し開始 ここから
For i = 1 To Cnt
'Sheet1 リフレッシュ
Sheets("Sheet1").Select
ActiveWorkbook.RefreshAll
Sheets("Sheet2").Select
With Worksheets("Counter")
.Range("A65536").End(xlUp).Offset(1, 0).Value = "=NOW()"
.Range("A65536").End(xlUp).Select
'データを”値”として貼り付け
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
.Range("B65536").End(xlUp).Offset(1, 0).Value = "=Sheet1!E21"
.Range("B65536").End(xlUp).Select
'データを”値”として貼り付け
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
.Range("A65536").End(xlUp).Select
'セルの選択解除
Application.CutCopyMode = False
'5分間待機
Application.Wait Time:=Now + TimeValue("00:05:00")
End With
Next
'繰り返し終了 ここまで
End Sub
-----
--参考ページ
http://www.asahi-net.or.jp/~ef2o-inue/top01.html
http://www.moug.net/
May 22, 2006
バックアップ USBメモリ
価格も手ごろになってきた”USBメモリ”を使用したバックアップ
システムを作成しました。
USBメモリをUSBポートに挿すだけでMy Documents以下のファイルを
コピーするバッチです。
Backup_USB.bat
----
@echo off
if not exist Backup mkdir Backup
xcopy "%USERPROFILE%\My Documents" Backup /s /e /c /v /h /d /y
exit
----
自動で起動するようにautorun.infも作成します。
autorun.inf
----
[autorun]
open=Backup_USB.bat
----
上記2つのファイルをUSBメモリ直下に作成します。
しかし、挿すだけで自動でBackup_USB.batが起動しません、、、
とりあえずBackup_USB.batをマニュアルで実行させました。
Backup配下に日付フォルダを作成する場合
Backup_USB_d.bat
----
@echo off
if not exist Backup mkdir Backup
cd Backup
if not exist %Date:~0,4%-%Date:~5,2%-%Date:~8,2% mkdir %Date:~0,4%-%Date:~5,2%-%Date:~8,2%
cd %Date:~0,4%-%Date:~5,2%-%Date:~8,2%
xcopy "%USERPROFILE%\My Documents" Backup /s /e /c /v /h /d /y
----
現状、1GのUSBメモリが大体8,000円台で購入可能です。
1つあってもよい外部デバイスなのではないでしょうか。
ただし、会社での使用を考える場合は個人情報保護法に抵触しないか、
また情報漏えいのリスクを考えましょう。
May 18, 2006
バックアップ 日付フォルダ
日付フォルダを作成し、その中にMy Documentsを保存するバッチ
です。
ヒストリカルにデータ保存をする際に最適かと思われます。
Backup.bat
-----
REM Folder name is YYYY-MM-DD
z:
if not exist Backup mkdir Backup
cd Backup
if not exist %Date:~0,4%-%Date:~5,2%-%Date:~8,2% mkdir %Date:~0,4%-%Date:~5,2%-%Date:~8,2%
cd %Date:~0,4%-%Date:~5,2%-%Date:~8,2%
xcopy "%USERPROFILE%\My Documents" . /s /e /c /v /h /d /y
exit
-----
z: 保存先のドライブ名です。
%Date:~0,4% コマンド"date /t"の0桁目から4文字選択
上記バッチファイルを実行すると実際には
x:\Backup\2006-05-18\ 配下にファイルがコピーされます。
May 15, 2006
May 12, 2006
玄箱 Postfixインストール
メールサービスであるPostfixのインストールを行いました。
(玄箱のLinuxは"Debian"です。)
まず、無料ダイナミックDNSへ登録をします。
今回は、"Dynamic DO!.jp"を使用した例です。
Domainは"hogehoge"とします。
--Dynamic DO!.jp
http://ddo.jp/
*ホストネームの変更(必要に応じて変更する)
/etc/hosts 及び /etc/hostname
を書き換える
*Postfixのインストール
# apt-get update
# apt-get install postfix
*/etc/postfix/main.cfを書き換える
# vi /etc/postfix/main.cf
----
mydomain = hogehoge.ddo.jp
myhostname = hogehoge.ddo.jp
mydestination = $myhostname, localhost.$mydomain, $mydomain
mynetworks = 192.168.1.0/24, 127.0.0.0/8
smtpd_helo_required = yes
allow_percent_hack = yes
swap_bangpath = yes
disable_vrfy_coomand = yes
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client, permit
smtpd_recipient_restrictions = permit_mynetworks, reject_sender_login_mismatch, check_rela
y_domains
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch
smtpd_etrn_restrictions = permit_mynetworks, reject_invalid_hostname
----
*サービスの再起動
# /etc/init.d/postfix restart
*メール送信テスト
$ mail hoge@nifty.com <--mail 送信先
Subject: test mail <--メールのタイトル
test test <--本文
. <--ピリオドで終了
Cc: <--CCに追加があれば入力
----
--参考ページ
http://shikichi.ddo.jp/postfix_set.html
http://www.kobitosan.net/postfix/
--第三者中継調査
http://www.nanet.co.jp/rlytest/relaytest.html
May 06, 2006
メール送受信テストシステム(2)
メール送信部のプログラム
testmail.cgi
----
#!/usr/local/bin/perl
# 画面表示
print "Content-type: text/html \n\n";
print "< html > \n";
print "< head > < title > Test send mail< /title > < /head > \n";
print "< body > \n";
print "< h1 > Test send mail< /h1 > \n";
print "< hr / > ";
use CGI;
use Jcode;
# 引数を取得する
$input_data = new CGI;
$count = $input_data- > param('count');
$to = 'hogehoge@japan.com';
# 送信前処理
$mailname = jcode($name)- > jis;
# ループ
for( $i=1 ; $i< =$count ; $i++) {
#######################
# 実行時の日時を取得
($sec, $min, $hour, $day, $mon, $year, $wdy, $yday, $isdst) = localtime(time);
@youbi = ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
$year += 1900;
$mon++;
$time = "$year-$mon-$day, @youbi[$wdy], $hour:$min:$sec";
#######################
# Send mail
open (MAIL, "| /usr/lib/sendmail -t");
print MAIL "To: $to \n";
print MAIL "Subject: $time \n";
print MAIL "Content-Type: text/plain; \n\n";
print MAIL "test mail \n";
close(MAIL);
print "現在の日時は $year-$mon-$day, @youbi[$wdy], $hour:$min:$sec です。< br \/ > \n";
print "ただいま $i 回メールを送信しました。 < br \/ > \n";
#######################
# インターバル 5分
sleep(300);
}
# 画面表示
print "Test mail は $count 回繰り返されました。 \n";
print "< /body > < /html > \n";
exit;
----
しかし、現状借りていますレンタルサーバーにて動作テストを
するとタイムアウトを起こしてしまいます。(300秒の待ちは無理)
当たり前と言えば当たり前ですが、、、
たぶんサーバーの設定で"keep alive"は100sあたりになっているので
しょう。次なる手段として、自宅サーバーにPostfixなるメールサービスを
導入して、Perlスクリプトをcronで自動実行させてみようかと
考えています。
--参考図書
CGI/Perlハンドブック 第3版
May 05, 2006
メール送受信テストシステム(1)
自動でメールの送受信をテストするシステムを作成してみたいと
思います。
--システム
外部システムからメールを受信 - メールクライアントより
エージェントを走らせ受信時に携帯メールへ転送
--用件
外部システム
・5分おきに送信
・Subjectに日時を挿入
・繰り返し回数を指定できる
・CGI及びSend mailで設計
実行インターフェース:testmail.html
送信プログラム:testmail.cgi
testmail.html
----
< html >
< head >
< meta http-equiv="content-type" content="text/html; charset=shift_jis" >
< title > Test send mail< /title >
< meta name="generator" content="Namo WebEditor v6.0" >
< /head >
< body bgcolor="white" text="black" link="blue" vlink="purple" alink="red" >
< h1 > Send mail< /h1 >
< p > < /p >
< form name="sendMail" method="post" action="./testmail.cgi" >
< p > Count: < input type="text" name="count" size="3" > < /p >
< p > < input type="submit" name="send" value="send" > < input type="reset" name="clear" value="clear" > < /p >
< /form >
< p > < /p >
< /body >
< /html >
----
--参考図書
CGI/Perlハンドブック 第3版
May 01, 2006
フォームからメールを送信 (2)
メールを送るためのCGIです。
sendMail.cgi
----
#!/usr/local/bin/perl
use CGI;
use Jcode;
# 引数を取得する
$input_data = new CGI;
$name = $input_data->param('name');
$subject = $input_data->param('subject');
$address = $input_data->param('address');
$body = $input_data->param('body');
# 送信先を指定する
$to = 'hoge@loripop.jp';
# 送信前処理
$mailname = jcode($name)->jis;
$mailbody = jcode($body)->jis;
$mailsubject = jcode($subject)->jis;
# メール送信
open (MAIL, "| /usr/lib/sendmail -t");
print MAIL "To: $to \n";
print MAIL "Subject: $mailsubject \n";
print MAIL "Content-Type: text/plain; \n\n";
print MAIL "名前: $mailname \n";
print MAIL "e-mail: $mailname \n";
print MAIL "$mailbody \n";
close(MAIL);
# 送信内容
$body =~ s/[\r\n,\n]/< br \/ > /g;
# 画面表示
print "Content-type: text/html \n\n";
print "< html > \n";
print "< head > < title > Test send mail< /title > < /head > \n";
print "< body > \n";
print "< h1 > Test send mail< /h1 > \n";
print "< hr / > ";
print "以下のメールを送信しました \n";
print "Name: $name< br / > \n";
print "Subject: $subject< br / > \n";
print "email: $address< br / > \n";
print "Body: $body \n < br / > ";
print "< /body > < /html > \n";
exit;
----
--参考図書
CGI/Perlハンドブック 第3版


