-->
./
<!-- フラ&#65533;ュが見れな&#65533;のためにここに何か書&#65533; --> フラ&#65533;ュがインス&#65533;&#65533;ルされて&#65533;&#65533;たいで&#65533;&#65533;&#65533;

2009年12月30日

[Rails]日付表示のフォーマット

environment.rbに以下を追加

ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!({
    :default => "%Y年%m月%d日",
})

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!({
    :default => "%H:%M",
})


 データ型はdate型とtime型、それぞれに設定。他の言語とかとフォーマットの修飾子が若干異なっているみたいです。よくある%mmなどの二桁指定も無視されました。




Powered by ScribeFire.

posted by hirono at 04:54| Comment(0) | TrackBack(0) | Rails

scaffoldで指定できるデータ型

第5回 scaffoldをやり直してカラムを増やしてみる – Rails格闘記 – ポンクソフト
scaffoldで指定できるデータ型は以下の通り。
シンボル 説明 対応するMySQLの型
:string 文字列 varchar(255)
:text 長い文字列 text
:integer 整数 int(11)
:float 浮動小数 float
:decimal 厳密な精度の少数 decimal
:datetime 日時 datetime
:timestamp より細かい日時 datetime
:time 時間 time
:date 日付 date
:binary バイナリデータ blob
:boolean 真偽型 tinyint(1)


 こういうのも忘れがちなので、まとめてあると助かります。

Powered by ScribeFire.

posted by hirono at 02:53| Comment(0) | TrackBack(0) | Rails

2009年12月29日

起訴の社会的影響は大きい。刑事責任を問う以上、正確な証拠に基づいて過失を判断する。それは審査会でも同じはずだ(神戸地検山根次席検事)

「高まる検察審査会の存在感 JR西歴代3社長はどうなる?」:イザ!
 さらに、検察審査会の判断に対して「反論」するだけでなく、事件の起訴・不起訴を判断するうえでの根幹の姿勢にも言及した。

 「検察だけの判断で不起訴にするのではなく、とりあえず起訴にして裁判所の判断を仰ごうという考え方もあるかもしれないが、起訴の社会的影響は大きい。刑事責任を問う以上、正確な証拠に基づいて過失を判断する。それは審査会でも同じはずだ」

 山根次席検事がとりわけ語気を強めた場面でもある。

 神戸地検の再度の不起訴を受け、検察審査会は第2段階の審査を進めるが、審査会が再度起訴すべきだと議決すれば、裁判所が指定した弁護士が検察官に代わり、強制的に起訴することになる。


posted by hirono at 19:36| Comment(0) | TrackBack(0) | 検察

「僕自身はどうしても被害者寄りになってしまう。(犯行状況の)供述調書を読み、怒りを抑えるのに必死だった」

時事ドットコム:「法律とギャップ感じた」=強姦事件判決で裁判員−神戸
自分の経営する会社の女性従業員に性的暴行をしてけがを負わせたとして、強姦(ごうかん)致傷罪に問われた藤原淳被告(49)の裁判員裁判で、神戸地裁(東尾龍一裁判長)は18日、懲役6年6月(求刑懲役7年)の判決を言い渡した。  判決後、裁判員を務めた男性(27)は取材に応じ、「僕自身はどうしても被害者寄りになってしまう。(犯行状況の)供述調書を読み、怒りを抑えるのに必死だった」と話した。  性犯罪の量刑に関し、「自分自身と法律上の考えの間にギャップを感じた。法律は国民感情についていけていないのではないかと思った」と述べた。


Powered by ScribeFire.

posted by hirono at 19:09| Comment(0) | TrackBack(0) | 裁判員制度

無料とは思えないぐらい多機能なアンチウイルスソフト「avast! antivirus Home Edition」

無料とは思えないぐらい多機能なアンチウイルスソフト「avast! antivirus Home Edition」 - GIGAZINE
常駐による各種ファイルのリアルタイム保護、特別な設定が不要な電子メールの常駐保護、各種メッセンジャーからの感染保護、WinnyなどのP2Pネットワークからの感染保護、ネットワーク内からの攻撃を防御するIDS(Intrusion Detection System)機能、IE・Firefox・Opera・Safari・Chromeなどの各種ブラウザで見ているページが感染していないかどうかチェックするWebシールド、差分更新による自動更新、右クリックメニューからのスキャン、スクリーンセーバー起動時にスキャン、ブートタイム検査、アンチスパイウェア・アンチルートキット、自己防衛システム、「VRDB」というウイルス修復データベースファイルなどといった各種機能をこれでもかというぐらい詰め込んでいるのがこのアンチウイルスソフト「avast! antivirus Home Edition」です。 家庭での非商用利用においてのみ無料で、Windows95/98/Me/NT/2000/XP/Vista/7に対応しており、Linux版も無料で提供されています。開発はチェコ共和国のプラハに本拠を持つALWIL Software社となっており、ソフトウェア会社がシリコンバレーになくても成功できるという生き証人的存在として非常に有名です。


Powered by ScribeFire.

posted by hirono at 19:06| Comment(0) | TrackBack(0) | ソフト

伽藍とバザール

The Cathedral and the Bazaar: Japanese
1 伽藍方式とバザール方式  Linux は破壊的存在なり。インターネットのかぼそい糸だけで結ばれた、地球全体に散らばった数千人の開発者たちが片手間にハッキングするだけで、超一流の OS が魔法みたいに編み出されてしまうなんて、ほんの 5 年前でさえだれも想像すらできなかったんだから。  ぼくもできなかった。Linux がぼくのレーダー画面に泳ぎ着いたのは 1993 年の頭だったけれど、その頃ぼくはすでに Unix やフリーソフト開発に 10 年以上も関わってきていた。1980 年代半ば、ぼくは最初期の GNU 協力者の一人だったし、ネット上にかなりのフリーソフトもリリースして、いまでも広く使われているようなプログラムをいくつか(nethack、 Emacs VC モードと GUD モード、xlife など)単独または共同で開発してきた。だから、もうやり方はわかってるもんだと思いこんでいた。  Linux は、ぼくがわかっているつもりでいたものを、大幅にひっくりかえしてくれた。それまでだって、小さなツールや高速プロトタイプ作成、進化的プログラミング といったUnix の福音は説き続けてはいた。でももっと上のレベルでは何かどうしようもない複雑な部分がでてきて、もっと中央集権的で、アプリオリなアプローチが必要に なってくるものだとも思っていた。一番だいじなソフト(OS や、Emacs みたいな本当に大規模なツール)は伽藍のように組み立てられなきゃダメで、一人のウィザードか魔術師の小集団が、まったく孤立して慎重に組み立てあげるべ きもので、完成するまでベータ版も出さないようでなくちゃダメだと思っていた。  だから リーヌス・トーヴァルズの開発スタイル――はやめにしょっちゅうリリース、任せられるものはなんでも任して、乱交まがいになんでもオープンにする――には まったく驚かされた。静かで荘厳な伽藍づくりなんかない―― Linux コミュニティはむしろ、いろんな作業やアプローチが渦を巻く、でかい騒がしいバザールに似ているみたいだった(これをまさに象徴しているのが Linux のアーカイブサイトで、ここはどこのだれからでもソフトを受け入れてしまう)。そしてそこから一貫した安定なシステムが出てくる なんて、奇跡がいくつも続かなければ不可能に思えた。  このバザール方式がどういうわけかまともに機能するらしく、しかもみごとな結果を生むなんて、衝撃以外の何物でもなかった。この世界の様子を学ぶにあ たって、ぼくは個別のプロジェクトだけでなく、なぜ Linux 界が混乱のうちに崩壊しないのか、それどころかなぜ、伽藍建設者たちの想像を絶するスピードで、続々と強みを発揮し続けられるのかを理解しようとしてき た。  1996 年半ばには、答がわかりかけてきたような気がした。そしてその頃まったくの偶然から、自分の理論を試してみる完璧な機会がやってきた。意識的にバザール方式で運営できるようなフリーソフトプロジェクトという形で。そこでバザール方式を試してみた――大成功。  というわけでこれから、そのプロジェクトの話をしようではないの。そしてそれを使って、上手なフリーソフト開発についていくつかアフォリズムを提案して みよう。全部が全部、Linux の世界で学んだことばかりではないけれど、そういうものでも Linux 界がすごくいい例になってることがわかるはず。ぼくが正しければ、なぜ Linux コミュニティがこんなにいいソフトを続々と生み出せるのか、みんなにもずばりわかるはず――そしてみんなももっと生産的になれるはずなんだ。

 久しぶりに少し読んでみました。

Powered by ScribeFire.

posted by hirono at 19:01| Comment(0) | TrackBack(0) | UNIX/Linux

CVS (Concurrent Versions System)をEmacsで使う(pcl-cvs)

CVS コマンドを Emacs から使う方法 (pcl-cvs)



 必要が出て、久しぶりに使ってみました。基本的な使い方は上記のサイトに書いてありますが、自分はM-x cvs-statusから呼び出して使いました。

 今日の早朝まで丸二日がかりぐらいで、Railsのユーザ認証をメールで行えるように設定したのですが、さくらのサーバの方で、チェックアウトした作業ファイルを編集したのです。なかなかうまくいかなかったので、なんども作業ディレクトリを消し、チェックアウトし直したのですが、ようやくうまくいったのでリポジトリの更新、つまりコミットをしようとしたのですが、複数のプラグインをインストールしたこともあり、追加のファイルが多すぎて、どうしたものかと考えました。
 Subversionだとちょっとしたスクリプトできることなのですが、CVSだとネットで調べても方法が見つかりませんでした。そこで使ったのがEmacsのpcl-cvsです。CVSの状態が一目でわかるので、登録されていないファイルをaでフラグを立て、cでコミット、コメントの入力を求められるので、適当に書いて、C-c C-cで完了です。

 これをUbuntu9.10のAptanaでチェックアウトし直すと、ほぼそのままで(無視すべきファイルは登録してあります。)、Railsアプリが、本稼働のサーバと同じように実行できました。もっと手間取るかと思っていたのですが、すんなりいけて、時間も掛かりませんでした。restful_authenticationプラグインの導入には、難儀して(メールを使わなければずっと簡単です。)時間も大幅に費やしたので、その分浮いたような感じです。

 Emacsはさくらのレンタルサーバで、あらかじめインストールされているものを使いました。パスは/usr/local/bin/emacsになっています。バージョンは、
GNU Emacs 22.3.1 (i386-portbld-freebsd7.1) of 2009-02-02
と出ました。

コミット前
u9-pcl-cvs_20091229
u9-pcl-cvs_20091229 posted by (C)hirono-hideki

コミット後
u9-pcl-cvs-up_20091229
u9-pcl-cvs-up_20091229 posted by (C)hirono-hideki

認証メール(動作確認をかねて)
u9-yahoo-mail_20091229
u9-yahoo-mail_20091229 posted by (C)hirono-hideki

Powered by ScribeFire.

posted by hirono at 18:41| Comment(0) | TrackBack(0) | ソフト

元裁判官、「検察はすべての証拠を裁判所に提出し、裁判所が争点を決めるよう制度を改めるべきだ」と主張した。

布川事件:証拠開示十分ならば結論変わっていた…元裁判官 - 毎日jp(毎日新聞)
2009年12月28日 2時34分  強盗殺人罪などで無期懲役判決を受けた2人の再審開始が確定した「布川(ふかわ)事件」で、70年代の有罪判決を担当した元裁判官と、80年代の第1次再審請求棄却を担当した元裁判官が毎日新聞の取材に応じた。元裁判官は再審開始決定の根拠となった証拠が当時開示されていれば「結論は変わっていた」と振り返り、検察側に不都合な証拠が開示されにくい刑事裁判の問題点を指摘。証拠の全面開示や取り調べの可視化の必要性を主張した。刑事司法制度の改革議論にも一石を投じそうだ。【原田啓之】  逮捕された桜井昌司さん(62)と杉山卓男さん(63)の2人は、捜査段階の自白と現場付近の目撃証言により有罪とされた。第1次請求審を担当した元裁判官は「被告は公判で否認しており、自白調書は捜査官の作文の域を出ないと思っていた。立証のポイントは目撃証言だった」と明かした。  しかし、08年の第2次再審請求東京高裁決定は、いずれの信用性も否定した。根拠としたのは再審請求後に検察側が開示した(1)2人と特徴が異なる人物を見たという近隣女性の証言(2)取調官の誘導をうかがわせる桜井さんの自白テープ−−などの新しい証拠だった。  元裁判官は近隣女性の供述調書について「こんな証拠があれば最初から結論が変わっていた。こういう証拠を隠していたことが問題」と検察側の対応を批判。「検察はすべての証拠を裁判所に提出し、裁判所が争点を決めるよう制度を改めるべきだ」と主張した。  一方、自白テープは捜査段階で複数作成され、一部は1審から提出されたが、弁護側は「検察側に都合のいいものばかり」と指摘。10カ所以上の編集痕跡があるとも主張していた。2人に有罪判決を下した元裁判官は「録音を聞いて『おかしい』と見抜けなかったのは不徳の致すところ」と謝罪。そのうえで「一部の録音で間違ってしまうのは困る。全面的な録音が必要で、制度的な課題を立法につなげることが大切だ」と語った。


Powered by ScribeFire.

posted by hirono at 07:36| Comment(0) | TrackBack(0) | 刑事裁判

Railsのメール送信を日本語対応にする。

2009-01-26 - 日常茶飯事
メールの日本語対応 ActionMailerJa % ruby script/plugin install git://github.com/kusakari/actionmailer_ja.git

 上記サイトを参考にしました。gitがインストールされている必要があるはずです。  その前に日本語のメールを送信していないので、はっきりわからないのですが、実行すると文字化けの起こりやすいサブジェクト(件名)が日本語で届いていました。

Powered by ScribeFire.

posted by hirono at 04:05| Comment(0) | TrackBack(0) | Rails

2009年12月26日

FenrirFS ファイル管理ソフト

フェンリル | フリーソフト | FenrirFS ファイル管理ソフト
ラベル・フィルタで自由自在。効率の良いファイル管理を体験してください。 ファイルを直接入れるだけ ファイルを直接入れるだけ デスクトップやメールソフトから、ファイルをフォルダに入れるように直接 FenrirFS にドラッグ・アンド・ドロップするだけで、簡単に素早くファイル管理ができるようになります。ファイルを FenrirFS に移すことで、スマートにファイルを管理できます。

 「2009年 窓の杜大賞」で知りました。

posted by hirono at 15:58| Comment(0) | TrackBack(0) | ソフト

タスクトレーの時計を改造するソフトTTClock

ちひろのページ - software
TTClockはタスクトレーの時計を改造するソフトです。
 TTClockは「Task Tray Clock」の略で、同種のソフトであるKazubon氏の「TClock」およびその派生ソフトとは全く異なるソフトウェアです(紛らわしくて申し訳ないです)。



 「2009年 窓の杜大賞」で知りました。

posted by hirono at 15:56| Comment(0) | TrackBack(0) | ソフト

同じソースなのにCSSの表示が異なるInternet Explorer8

Apacheのサーバ
IE8CSSsakura
IE8CSSsakura posted by (C)hirono-hideki

WEBrick Server
IE8CSS3002
IE8CSS3002 posted by (C)hirono-hideki

 思い当たるのは、WEBrick ServerとApacheの違いぐらいです。Internet Explorerもバージョンが8になっていくらかましになったそうですが、やはり問題が起きやすいという感じです。
 Firefoxだと問題が起こることはほとんどなく、こういうこともあるのでInternet Explorerを使うことは少ないのですが、圧倒的なシェアを持つブラウザなので、ホームページの作成となると、ある程度合わせるしかなさそうです。


posted by hirono at 05:33| Comment(0) | TrackBack(0) | 日記

スタイルシート(CSS)で水平線に色をつける。

スタイルシート[CSS]/ページ全般/水平線に色を付ける - TAG index Webサイト


<hr style='height: 3px; background-color: orange; border: orange; margin-left: -10px; margin-right: -10px;' />


<hr style='height: 3px; background-color: none; border: orange; margin-left: -10px; margin-right: -10px;' />

Powered by ScribeFire.



posted by hirono at 03:16| Comment(0) | TrackBack(0) | 日記

2009年12月25日

「客観的な事実として鑑定を出した」DNA型で科警研所長が証言−足利事件再審公判

当時の鑑定「ミス見当たらない」=DNA型で科警研所長が証言−足利事件再審公判(時事通信) - Yahoo!ニュース
 科警研は91年、当時導入間もない鑑定で、女児の遺留下着に付着した体液と菅家さんのDNA型が一致したとしていた。
 福島所長は検察側から科警研の鑑定データを示され、「鮮明度はない」としたものの、「一致したと推測できる」と信用性を主張。公判終了間際に菅家さんが強い口調で謝罪を求めると、所長は「客観的な事実として鑑定を出した」などと応じなかった。
 弁護側の再鑑定人の本田克也筑波大教授は前回公判で、当時の鑑定について、「誤差が大きく失敗。鑑定し直すべきだった」と指摘していた。 


posted by hirono at 13:29| Comment(0) | TrackBack(0) | 刑事裁判

Railsでのアクセスログの記録

別にこんなことをしなくてもApacheや他のソフトがログを記録してくれているのですが、一つのファイルに対するアクセス状況を把握しやすいので便利かと思います。だいぶん前に作ったものですが、今回、日付の部分を修正しました。実際は部分的な抜粋になっています。

class Ctx1Controller < ApplicationController                                             
    #before_filter :set_default_content_type                                             

  def kennkei
    fh = open("#{RAILS_ROOT}/log/kennkei_log",'a+')
    fh.flock(File::LOCK_EX)            
    today = Time.now                   
    wdays = ["日", "月", "火", "水", "木", "金", "土"]
    fh.print today.strftime("%Y-%m-%d %H:%M:%S"), " ", wdays[today.wday], " "
    fh.print " IP=>", request.remote_ip, " HOST=> ", `host #{request.remote_ip}`.chop
    fh.print "リファラ=>", request.referer, "\n"                                    
    fh.flock(File::LOCK_UN)                                                         
    fh.close                                                                        
  end
end


 開発環境であるAptanaで見るとこんな感じです。
ホームページ
ishikawa_kennkei_aptana_20091226
ishikawa_kennkei_aptana_20091226 posted by (C)hirono-hideki

ログファイル
ishikawa_kennkei_aptana-log_20091226
ishikawa_kennkei_aptana-log_20091226 posted by (C)hirono-hideki


Powered by ScribeFire.



posted by hirono at 03:58| Comment(0) | TrackBack(0) | Rails

[Ruby]日付と時刻のフォーマット

逆引きRuby - 日付と時刻


irb(main):001:0> today = Time.now
=> Fri Dec 25 03:36:58 +0900 2009
irb(main):002:0> wdays = ["日", "月", "火", "水", "木", "金", "土"]
=> ["\346\227\245", "\346\234\210", "\347\201\253", "\346\260\264", "\346\234\250", "\351\207\221", "\345\234\237"]
irb(main):003:0> print today.strftime("%Y-%m-%d %H:%M:%S"), " ", wdays[today.wday]
2009-12-25 03:36:58 金=> nil


Powered by ScribeFire.

posted by hirono at 03:41| Comment(0) | TrackBack(0) | Ruby

【光市母子殺害】弁護士19人1.2億円請求 橋下知事「逸脱なら改める」 - MSN産経ニュース

【光市母子殺害】弁護士19人1.2億円請求 橋下知事「逸脱なら改める」 - MSN産経ニュース
 山口県光市の母子殺害事件で殺人罪などに問われ、死刑判決を受けた元少年(28)=上告中=の弁護団だった弁護士19人が27日、テレビ番組内で名誉を傷つけられたとして、読売テレビ(大阪市中央区)と大阪府知事の橋下徹弁護士を相手取り、総額約1億2千万円の損害賠償を求める訴えを広島地裁に起こした。

 こちらは懲戒請求のあとに、民事裁判になったみたいです。2009.11.27 11:56の記事になっていますが、割と最近ですが、知らないでいました。

Powered by ScribeFire.

posted by hirono at 02:21| Comment(0) | TrackBack(0) | 弁護士

【光市母子殺害】実名本問題で著者が元少年らを提訴 - MSN産経ニュース

【光市母子殺害】実名本問題で著者が元少年らを提訴 - MSN産経ニュース
2009.12.24 18:40 山口県光市母子殺害事件を扱った単行本をめぐり、元少年らを提訴した著者の増田美智子さん(中央)と出版会社の寺沢有代表(奥)=24日午後、東京・霞が関の司法記者クラブ山口県光市母子殺害事件を扱った単行本をめぐり、元少年らを提訴した著者の増田美智子さん(中央)と出版会社の寺沢有代表(奥)=24日午後、東京・霞が関の司法記者クラブ  山口県光市母子殺害事件の元少年の男性被告(28)=死刑判決を受け上告中=を実名で記した単行本出版をめぐり、虚偽の事実を公表され名誉を傷付けられたとして、著者の増田美智子さん(28)と出版元の「インシデンツ」は24日、元少年や元少年の弁護団に1100万円の損害賠償を求める訴訟を東京地裁に起こした。  増田さんらは訴状で、元少年の弁護団が「増田さんが出版にあたり元少年や弁護団に内容を確認させるとの約束をした」「ジャーナリストであることを隠して、増田さんが元少年に接触した」と主張していることについて、「全くの事実無根」と指摘。弁護団らにより名誉を傷付けられ損害を受けたとしている。  またインシデンツ側は同日、社説で虚偽の指摘をされて名誉を傷付けられたとして、毎日新聞に2200万円の損害賠償などを求める訴えを起こした。

 初めタイトルを見て、意味がよくわかりませんでした。  取材者が取材をした相手を訴えたことになりそうですが、初めて聞く話です。  いずれ弁護士の懲戒請求の問題にもなりそうです。

Powered by ScribeFire.

posted by hirono at 02:16| Comment(0) | TrackBack(0) | 弁護士

2009年12月24日

[Excel-VBA]メール送信の記録用のマクロ

このマクロの実行側のワークシートです。ログファイルは独立したファイルとして保存され、読み込まれます。

送信メール2009年12月24日
送信メール2009年12月24日 posted by (C)hirono-hideki

Sub createLog_Click()
    Dim cureentBook As Workbook, logBook As Workbook
    Dim strDir As String, strFileName As String, sfilename As String
    strDir = "D:\VMwareShare\Kokuhatu\Mail\Logs\" '作業ディレクトリ
    strFileName = strDir & "send-mail-log_" & Format(Now, "yyyymmdd") & ".xls" '絶対パスのファイル名
    Set cureentBook = ActiveWorkbook '現在のワークブックを保持

    'ディレクトリパスと拡張子を除いたファイル名を取得
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    sfilename = FSO.GetBaseName(strFileName)
    MsgBox sfilename
        'ログ記録用のファイルを開く、存在しない場合は新規作成。

'ブックが開かれている場合はフラグを付ける。
    Dim chk As Boolean
    For Each wb In Application.Workbooks
        If wb.Name = sfilename & ".xls" Then
            chk = True
            Exit For
        Else
            chk = False
        End If
    Next

'ブックが開かれているか確認。開かれていない場合はファイルから読み込む。
If chk Then
    MsgBox "ブックは既に開かれています。"
Else
    'ログ記録用のファイルを開く、存在しない場合は新規作成。
    If Dir(strFileName) <> "" Then
        MsgBox "存在します。開きます。"
        Workbooks.Open strFileName
    Else
      MsgBox "存在しません。新規作成します。"
    ' フォルダに指定したファイルがないとき、ファイルを新規作成して名前を付ける
        Workbooks.Add
        ActiveWorkbook.SaveAs FILENAME:=strFileName
        ActiveWorkbook.Close
        Workbooks.Open strFileName
    End If
End If

    '元のブックをアクティブにし、データ範囲をコピー
    cureentBook.Activate
    Sheets("送信").Select
      
    Range("A11:C11").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Cells(24, 5).Select
   
    Application.DisplayAlerts = False      '確認ダイアログを表示させない
    Application.ScreenUpdating = False    '画面更新を中断する<
   
    'ログファイルのブックをアクティブにし、名前をつけてシートを新規に作成し、データを貼付け。
    Set logBook = Workbooks(sfilename & ".xls")
    logBook.Activate
    Dim NewWS As Worksheet
   
    '同一シート名の確認
    Dim chkSheetName As String
    chkSheetName = Format(Now, "yyyy年mm月dd日hh時nn分")
    For Each objWS In logBook.Worksheets
        If objWS.Name = chkSheetName Then
                MsgBox chkSheetName & "というシート名は既に存在します。1分時間をずらしてやり直して下さい。"
                Application.CutCopyMode = False
                Exit Sub
        End If
    Next

    Set NewWS = Worksheets.Add

    'NewWS.Range("A1:C1").Select
    NewWS.Paste
    NewWS.Columns("A:C").AutoFit
   
    NewWS.Name = Format(Now, "yyyy年mm月dd日hh時nn分")


    'Sheet1のシートを削除
    For Each objWS In logBook.Worksheets
        If objWS.Name = "Sheet1" Then
                Worksheets("Sheet1").Delete
        End If
    Next
   
   
    Application.DisplayAlerts = True      '確認ダイアログを表示する
    Application.ScreenUpdating = True    '画面更新を再開する

    Cells(24, 5).Select
    Application.CutCopyMode = False
   
    ActiveWorkbook.Save
    'ActiveWorkbook.Close
   
End Sub

 改良しました。作成されたログファイルはこんな感じです。実際に送信しておらず、一部手を加えたところもあります。
send-mail-log
send-mail-log posted by (C)hirono-hideki


 はじめからunionというのを使っていれば、ずっと完結できたと思います。改善の余地はまだまだありそうですが、過程というのも大事なので、そのままのコードを記載しておきます。文字修飾のあたりは、面倒なので、記録した自動マクロからコピペしました。
修正コード
Sub createLog_Click()
    Dim cureentBook As Workbook, logBook As Workbook
    Dim strDir As String, strFileName As String, sfilename As String
    strDir = "D:\VMwareShare\Kokuhatu\Mail\Logs\" '作業ディレクトリ
    strFileName = strDir & "send-mail-log_" & Format(Now, "yyyymmdd") & ".xls" '絶対パスのファイル名
    Set cureentBook = ActiveWorkbook '現在のワークブックを保持

    'ディレクトリパスと拡張子を除いたファイル名を取得
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    sfilename = FSO.GetBaseName(strFileName)
    MsgBox sfilename
        'ログ記録用のファイルを開く、存在しない場合は新規作成。

'ブックが開かれている場合はフラグを付ける。
    Dim chk As Boolean
    For Each wb In Application.Workbooks
        If wb.Name = sfilename & ".xls" Then
            chk = True
            Exit For
        Else
            chk = False
        End If
    Next

'ブックが開かれているか確認。開かれていない場合はファイルから読み込む。
If chk Then
    MsgBox "ブックは既に開かれています。"
Else
    'ログ記録用のファイルを開く、存在しない場合は新規作成。
    If Dir(strFileName) <> "" Then
        MsgBox "存在します。開きます。"
        Workbooks.Open strFileName
    Else
      MsgBox "存在しません。新規作成します。"
    ' フォルダに指定したファイルがないとき、ファイルを新規作成して名前を付ける
        Workbooks.Add
        ActiveWorkbook.SaveAs FILENAME:=strFileName
        ActiveWorkbook.Close
        Workbooks.Open strFileName
    End If
End If

    '元のブックをアクティブにし、データ範囲をコピー
    cureentBook.Activate
    Sheets("送信").Select
      
    Range("A10:C10").Select
    Range(Selection, Selection.End(xlDown)).Select

    Selection.Copy
    Cells(24, 5).Select
   
    Application.DisplayAlerts = False      '確認ダイアログを表示させない
    Application.ScreenUpdating = False    '画面更新を中断する<
   
    'ログファイルのブックをアクティブにし、名前をつけてシートを新規に作成し、データを貼付け。
    Set logBook = Workbooks(sfilename & ".xls")
    logBook.Activate
    Dim NewWS As Worksheet
   
    '同一シート名の確認
    Dim chkSheetName As String
    chkSheetName = Format(Now, "yyyy年mm月dd日hh時nn分")
    For Each objWS In logBook.Worksheets
        If objWS.Name = chkSheetName Then
                MsgBox chkSheetName & "というシート名は既に存在します。1分時間をずらしてやり直して下さい。"
                Application.CutCopyMode = False
                Exit Sub
        End If
    Next

    Set NewWS = Worksheets.Add

    NewWS.Range("A7").Select
    NewWS.Paste
    NewWS.Columns("A:J").AutoFit
   
    NewWS.Name = Format(Now, "yyyy年mm月dd日hh時nn分")


    'Sheet1のシートを削除
    For Each objWS In logBook.Worksheets
        If objWS.Name = "Sheet1" Then
                Worksheets("Sheet1").Delete
        End If
    Next
   
   
    Application.DisplayAlerts = True      '確認ダイアログを表示する
    Application.ScreenUpdating = True    '画面更新を再開する

    Cells(24, 5).Select
    Application.CutCopyMode = False
   
  
    ActiveWorkbook.Save
    'ActiveWorkbook.Close
   
    cureentBook.Activate 'ログブックをアクティブ
     'Set r = Range(Cells(1, 1), Cells(8, 10))
     Set r = Union(Range(Cells(1, 1), Cells(4, 10)), Range(Cells(8, 1), Cells(8, 10)))

    r.Copy Destination:=logBook.Worksheets(NewWS.Name).Range("A1")
    NewWS.Columns("A:J").AutoFit

    logBook.Activate

    Range("D1").ColumnWidth = 10
   
    Range("A6").Value = "送信履歴"
    Range("A6").Select
    With Selection
        .HorizontalAlignment = xlDistributed
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 1
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection.Font
        .Name = "MS Pゴシック"
        .FontStyle = "太字"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = 3
    End With
    With Selection.Interior
        .ColorIndex = 40
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
    End With

End Sub



posted by hirono at 05:24| Comment(1) | TrackBack(0) | プログラミング