「etTomioのトホホ日記」 2010年7月        

◆2010/7/29
 何故か、この曲を聴きたくなりました。自分はブルーレイで見ていますが、動画サイトから X JAPAN - Without You -for HIDE
 若くして夭折した天才ギタリスト、ヒデに贈られた曲です。
◆2010/7/27
 さて日曜日の撮影で一番の収穫は、広角28mmでN700を一発で撮ったことかな。もう一度やると絶対失敗するのでやりませんでした。
      
◆2010/7/27
 先日日曜日、朝4時過ぎに起きまして、4:45には家を出ました。軽トラに脚立を積んで。向かったのは、先月22日、小郡に免許更新に行き、その帰りに1時間余りロケハンした、防府市大道の奥、新幹線第二右田トンネルと第一畦倉トンネルの間です。此処は徳山方から1km余りの直線があり、次第に右側にカーブしています。
 さて朝早い500の「こだま」は見事鼻切れでした。これのために朝早く出たのに・・・
 この間で撮った絵を3点upします。
     
◆2010/7/24
 今日、久しぶりに新幹線撮影に出て、ドクターイエローをドアップで先頭から最後尾の7両編成を収めましたが、もうそろそろ700系じゃなく、N700のドクターイエローは出来ないですかね。東海道は最高速度270ですから、現行でいいんですが、山陽はN700の半分は300で走っていますからね。来年の九州直通の8両編成のN700「さくら」も山陽区間は300kmなんですけどね。
◆2010/7/24
 今日は実に2ヶ月半ぶりに新幹線撮影です。お目当てはドクターイエロー、しかもJR西日本のT5編成。最近全く見ていません。ところが数分前に雲がかかってしまいました。1分ぐらい前に日が差してくれました。向こうに黄色の車体が見えてきました。目一杯引きつける・・・ そしてシャッターを切った数秒後にまた雲がかかりました。暑いのでこれで退散です。
   
◆2010/7/22
 先日こき下ろしたRoxioから返答が来ました。来ないと思ってたのに。

ご連絡いただきました件について、ご案内いたします。
はじめに、弊社のソフトウェアにてご希望の操作が行えないことに関して、お詫び申し上げます。
Roxio Creator 2010 を含む弊社ソフトウェアにつきましては、暗号化やコピープロテクトが施されているディスクに対して、正常な操作を行うことができかねます。
ご申告内容より、他社製ソフトウェア等を使用し、該当ディスクや作成ファイルに対して何らかの操作を行われている状況と存じ上げますが、この場合につきましても、弊社ソフトウェア以外の操作を行われたコンテンツに対して、弊社ソフトウェアを使用する場合は、的確なご案内を行うことができかねます。
恐れ入りますが、あしからずご了承下さいませ。

 違うな。どのような操作をしたデータであろうと、ディスクに書き込みが出来ないようでは、現在、その価値はない。CDやDVDなんて今やWindowsからでも焼けるんじゃなかったっけ・・・ 確認してないけど。DVDは何度も書いてるようにDvd Decrypterで読み込み、書き込みが出来る。
 となると、有償のあなた方のソフトの存在価値がないんだよ。さらにフリーの「Img Burn」に比べて、書き込みに異常に時間がかかっている。会社組織のあなた方のソフトが、個人のフリーソフトに負けてんだよ。
 ま、次回からのアップグレードの選択肢からは少なくとも私はパス。
◆2010/7/21
 「新幹線検索」の昔のプログラムを改竄していますが、先日日曜日上りを時刻表1ページタイプしたら、例えば博多発、広島着で検索すると広島の時刻が表示されません。まいったな。下りは全てタイプしたのですが、そのとき、主要駅は着と発の時刻を入れました。
駅順のシートも主要駅は着、発を入れました。
 ところが上りとなると下りでは広島着、発ですが、上りは広島発、着なんてあり得ないんですね。ちぇっ、indexで蹴られたか。仕方なく、主要駅の着発を消しました。ですから下り新大阪ですと、新大阪終着は新大阪着を、もっと下る列車は新大阪発の時刻に変えました。
 さて、新幹線と名が付いているだけで、このプログラムの勉強をしていますが、このプログラムから私は何を学ぶのだろう ? 無茶苦茶難しいです。現在では扱えないExcel5のフォームをプログラムで初期化して、続いてプロシージャ、実行命令が延々とコードで書かれています。
◆2010/7/21
 正直、私がレンタル店でブルーレイを借りて、データをパソコンに抽出しているのはAny DVD HDです。データを取り込んだら、大抵原板は返却しています。あとはブールーレイに書き込めばいいのですが、最近ここが問題。Roxio Creatorを使って焼いていましたが、1ヶ月ぐらい前「2012」で容量オーバー、おいおい50GBを超えるブルーレイなんてないぞと、フリーの「Img Burn」を使ったら焼けました。数日前も、Roxio Creatorを使って焼こうとしたら、エラー。版をパーにしました。これも「Img Burn」でクリア。
 Roxioからは返事来ないかも知れないな。フリーソフトに負けてるもん。さらに「Img Burn」で焼く方が遙かに早い。
◆2010/7/21
 DVD DecrypterというのはDVDをコピーする必需フリーソフトでした。2005年に開発中止されました。ノルウェーのヨン・ヨハンセンが1999年に開発されたそうです。その後マクロビジョンにやられたのかな。現在は書き込みに特化した「Img Burn」の開発を続けておられます。
 この人が本気になれば、フリーでブルーレイのコピーガードを突破するソフトを作っておられたかも・・・ ま、それがいいのかどうかはともかく、私は、一昨年の秋に登録したあるソフトで、今後も無料でバージョンアップを受けられます。現在は年会費が必要な筈です。因みにソフト名はAny DVD HD。
◆2010/7/21
過激なHPでの書き込みすみません。
ご回答のアップデーとパッチで2つの問題をクリアしました。
しかし、問題は、Power DVD9の修正プログラムで良くなったのに、
その問題を新たな10に反映されないままに、リリースされたのが問題ではないでしょうか。
返金についてのことも書かれておられますが、このまま使用させていただきます。

 昨日、焼酎飲みながら書いたソフトに対してのこき下ろしですけど、直ぐにメールが来まして、アップデートパッチを当てたら2つの問題をクリアしました。
こんな事書いて怖くないのか ? 全然。こちらは金払ってるんだし、競合するソフトは問題なく稼働するんだから、当然のことでしょう。
 パソコンに余りお詳しくない方は、この辺りで随分損しておられるのでは・・・
 さてRoxioについては今のところ回答ないな。あんたのところの有償のソフトが、かの有名なDVD Decrypterの作者のImg Burrn ( フリーソフト )に負けてるんですけどね。
◆2010/7/20
 昨日、市販ソフトの1本を私のHPでこき下ろしたので、今日はもう1本。CyberLink PowerDVD 10 これ駄目。カミサンに衛星で取って貰ったブルーレイはかからないし、音楽DVDを再生すると、ボコボコ変な音がする。これ、9の修正プログラムでは直ったのに、最新のPowerDVD 10ではまたも、9で修正したのに、10でまた元に戻った。
 パソコンでDVD、ブルーレイをご覧になる方は、Corel WinDVD 2010を使いましょう。
◆2010/7/20
 昨日、市販ソフトの1本を私のHPでこき下ろしたので、今日はもう1本。CyberLink PowerDVD 10 これ駄目。カミサンに衛星で取って貰ったブルーレイはかからないし、音楽DVDを再生すると、ボコボコ変な音がする。これ、9の修正プログラムでは直ったのに、最新のPowerDVD 10ではまたも、9で修正したのに、10でまた元に戻った。
 パソコンでDVD、ブルーレイをご覧になる方は、Corel WinDVD 2010を使いましょう。
◆2010/7/19
 先程日記に書いた、コメントはそのまま、Roxioに送信しました。
 そんなこと書いて怖くないか・・・ 全然、確かにレンタルのブルーレイ映画のデータを抜き出して、コピーするのは問題かも知れません。でも現に有料のそういうソフトがあるのです。抜き出したデータをブルーレイに焼こうとして失敗するのは、Roxioのソフトの問題です。
◆2010/7/19
 暑い !! 梅雨明け後のひと言。世間は連休でしょうが、私はいつものごとく出勤です。
 昨日、レンタル店で、トム・クルーズの「マイノリティ・リポート」とかいうブルーレイを借りてきました。いつものごとくPCでデータの抜き出し。さてこれを有料のあるソフトでブルーレイに書き込もうとしたら、いきなりバージョンアップのお知らせ。まだ書き始めてないなと、こちらをクリックしたら、タッチの差で書き込みが始まってしまった。ちぇっ 高い50GBのディスクがパー。バージョンアップして、書き始めたら、3時間、ほったらかしてたら、どこかでエラーが出たらしくストップしています。なんと2枚のブルーレイがパー。
 仕方なく、フリーのImggBurnで焼きました。以前もあったな。有料のこのソフトで50GBをオーバーで焼けず、フリーのImggBurnなら焼けたってこと。こうなるとアップデート版で\8,000もするソフトがいかに役に立たないか・・・
 このクソみたいなソフトの名を書いときましょう。Roxio Creator 2010 です。ImggBurnの3倍の時間をかけて、ディスクを捨てるハメになるなんて、プログラムの根本がクソでしょう。
◆2010/7/18
 7/11に始めた、Excel95じゃなかった、Excel5ですね。雑誌の付録の「新幹線.xls」のプログラムを現在の時刻表に変えてやろうと、7/14までは文字の大きな時刻表から1列車ずつタイプしていました。下りから始めて全15ページ中、10ページまで打ち込みました。
 車種別で「のぞみ」「ひかり」「こだま」と選ぶのですが、勿論全部選んで検索してもいいのですが、最初からこの中に「さくら」を入れたかったのです。来年の春から、九州新幹線に乗り入れるN700の8両編成の水色の電車です。
 現在、山陽を走っているレールスターは「ひかり」レールスターです。でも「さくら」は「ひかり」「さくら」とは恐らく言わないでしょう。
 ところがこれがまいった。Formは昔のダイアログシートで作られています。しかもこのFormや検索のシステムがA4で4枚位のプログラムコードで書かれています。Formにチェックボックスを増やして「さくら」と入れ、コードを書き直すのですが、いくらやってもエラー。
 自作のFormを作ろうかと思いましたが、これをすべてコードで初期化し、データを入れていくなんて、今の自分の実力では無理。
 もう一度昔のExcelのVBAの本を2冊読み、最初から入ってるFormに「さくら」を増やし、該当するコードをすべて書き加え、時刻表の下りに1行「さくら」のダミーを書きました。すると検索した。やれやれ1週間思い悩んでいたことが解決しました。
 今7時半で今日も晴れていますが、どこにも出かけず、また時刻表のタイプにとりかかろうと思います。
◆2010/7/18
 昨日は午前中は曇りと思って、朝の6時半から、隣の家の前の荒らしている田んぼの草刈りを始めたら、今まであれほど雨が降っていたのに、見事に晴れ。1反あまり刈るので、途中でやめようと思ったが、数回燃料を注ぎに戻り、10時までかけてみな刈ってしまった。
 服も身体も草だらけ… シャワーを浴びて焼酎飲んだら寝てしまった。梅雨が明けたそうである。
◆2010/7/11
 今朝は、昨日の午後やろうとして諦めていたExcelのプログラムをいじっています。昔買っていたExcel95のマクロの本から、「新幹線列車検索」というプロラムが今日からのメニューです。幸い付録のフロッピーは引出しにありました。ところが私のパソコンはフロッピーを読めないので、先日カミサンのパソコンからコピーしておりました。
 何せ難解なコードがずら〜っと並び、本を読んでは、あるいはコードを見ながら、少しずつ解析しようと… 自分の好きな新幹線だから、今後付き合っていけるだろうと…
 ダイヤは15年も前のデータですから、今現在のデータに直してやろうと… ところが、あるフォームを改造しようとして、コードを書き直したり、フォームをいじるのですが、どこにロックがかかっているのか直せません。
 駅は東海道・山陽で16の駅が抜粋されて登録されていますが、これも現在の全ての駅を登録してやろうと… ちょっと手間取りましたが、こちらは検索出来るようにしました。
 で、何をしているかというと、選挙に行った後、書店で「文字の大きな時刻表」を買い、東京から博多までダイヤをタイプし始めたのです。まず「下り」から始めましたが、下りだけで15ページもあるのに、18時半現在まだ3ページしかタイプしていません。
 なんでこんな事を… 自分の好きなテーマなら、あのめちゃくちゃ長いコードを少しずつ解析出来るかなと… 私の描く夢のようなプログラムの足がかりにならないかなと… それにしても馬鹿ですねえ。
◆2010/7/11
 昨日は、朝の天気を見て、2か月ぶりの新幹線撮影を諦め、早朝 会社にちょっと顔を出し、その後は7時頃からウチの回り、そして田んぼの畔の草刈りを始めました。もう、飽きたと止めたのが11時前でした。
 シャワーを浴びた後、昼からいつもの焼酎を飲み、午後からはExcelのプログラムをいじろうとしていたのに寝てしまいました。
◆2010/7/9
 この2ヶ月間、全く写真を撮りに出ていないので、3年前の京都駅を・・・
    
◆2010/7/8
 何故、私が毎晩、あるいは土日に焼酎飲みながら、Excelでマクロを書いているか・・・
自動記録マクロはWin3.1の頃からやっていますが、コードを書き始めたのはExcelではここ2ヶ月前からですね。きっかけは、こんな面倒なこと毎日やってられるか ! それと何度も書くようにパソコンとカメラはネクラのオモチャ・・・
 Excel VBAの昔の本に、
 食事やトイレは生活習慣だから仕方ないとして、同じ事を繰り返しているとそのうち飽きてしまう。でも仕事は片付けなければならない。そこで、面倒な繰り返しを出来るだけ簡単に済ませる方法を考えるようになる。
 こうすることのきっかけは「面倒だなぁ」という気分だ。面倒だと思わなければ、繰り返しを何とかしようなどとは思わない。人間、面白いもので、繰り返しすぎると慣れてしまう。同じ事を何度も繰り返しているうちに、「不快」が「快」に変わるのだ。すると「面倒だ」とも「何とかしよう」とも思わないようになってくる。
 と、まだ続きますが、要するにルーチン作業をメンドくさくてやってられるか ! が、私の最近のマクロ作りです。
◆2010/7/8
 先日苦労してフォームを作ったファイルはもっと怖いです。起動時のフォームで自動を選ぶと、本当にデータは合っているのか、10秒足らずで作っていきますから… これはフォームのチェックボックスのマニュアルを選んだ方がいいのかもしれません。
◆2010/7/8
 昨夜、操作メニューの隣にそれぞれ自動マクロボタンを作り、今日、実際に使ってみましたが、もう、画面も確認する間もないままに、自動で作っていきますからね。ある意味怖いです。
◆2010/7/8
 昨日は、帰宅して久しぶりに小一時間ほど田んぼの畔の草刈りをしました。それから夜は何をしようかと… なんか、焼酎飲むだけのために帰宅しているような…
 あるファイルの操作メニューの右横にマクロボタンを付けていきました。これを押すと書かれていることが自動実行されます。
 さて最後に、保存して終了。ん、これは書けない。参考書を探して
ThisWorkbook.close SaveChanges:=True
 しかし、これを実行すると、保存はするけど開いているBookだけ閉じて、Excelは終了しないんですね。他、2冊の文献も調べましたが、コードの書き方に違いはあっても、することは一緒でした。
 私は保存して、Excelごと閉じたいんだけど… そんなのエクセルの右上の×ボタンを押せばいいだけのことです。でもコードで書きたい。
 Excel マクロ Excelの終了 でネットで検索しました。
 結局、
Application.DisplayAlerts = False '---確認メッセージ非表示
Application.Quit
 というのを見つけ、保存するかのメッセージなしに閉じるんだから、ここはTrueにすればいいと

Sub 終了時確認()
'
' 保存して終了 Macro
' マクロ記録日 : 2010/7/7 ユーザー名 : ettomio
'
' インターネット http://www.moug.net/tech/exvba/0150079.htm を参考

    Application.DisplayAlerts = True '---確認メッセージ表示
    Application.Quit '---Excelを終了します

End Sub

 何度もいいますが、右上の×ボタンを押したのと同じです。
 ま、これだけのことを書くだけで、昨夜は遊べました。
◆2010/7/6
 先程の16:45を超えたら・・・ というところで、毎日8:10になったら1回目の自動処理を、10:35になったら2回目の自動処理をということも出来ると思いますが、親会社がタイマーで自動実行していて、そのまた上の親会社からデータが遅れて、空のデータが来ることがよくあるんですよ。その度に電話で「データが入ってないよ」。こういうことがあるので、ウチではタイマーでの自動処理は出来ないですね。
◆2010/7/6
 先ほどのマクロが余りに面白くなかったので、通常は翌日分のデータは11時頃までにつくりますが、水曜日でも定時の16:45を過ぎたら表示するなのコードを入れました。
Private Sub Workbook_Open()
'今日の曜日を取得  2010/7/6 ettomio

d = Date
a = Weekday(d)
t = Time

Select Case a
Case 1
aaa = "日曜日"
Case 2
aaa = "月曜日"
Case 3
aaa = "火曜日"
Case 4
aaa = "水曜日"
Case 5
aaa = "木曜日"
Case 6
aaa = "金曜日"
Case 7
aaa = "土曜日"
End Select

If t >= "16:45" Then
Exit Sub
End If


If a = 4 Then
MsgBox " 今日は" & aaa & "です。○○の確定を忘れないように !! "

End If

End Sub
◆2010/7/6
 あっ 先程のコードで、Dateの代わりにTimeと入れれば、現在の時刻が秒単位で ( パソコンの内蔵時計 )、Nowと入れれば、今日の日付と時刻が表示される筈です。時刻表示で「今日は」が気に入らなければ "今"と入れられたらOKです。
◆2010/7/6
 今日は面白くもなんともなかったので、もしExcelのマクロに興味をお持ちの方は、
Excelを開いて、「表示」→「ツールバー」→「フォーム」と選んで、どこでもいいですから、ボタンを作ってみて下さい。「ボタン1」が出来ると思います。
 そうすると「マクロの登録」→「ボタン1_Click」と出ると思いますので「新規作成」→
Sub ボタン1_Click()

End Sub
と出るはずなので、

Sub ボタン1_Click()
      MsgBox "今日は" & Date & "です。"
End Sub

と1行入れてみて下さい。そしてExcelに戻し(1番左上のExcelボタンを押せば通常画面に戻ります)、ボタン1を押すと
今日は2010/07/06です。と表示される筈です。OKボタンを押せば消えます。
マクロの初歩ですが、これで興味を持たれたら、泥沼にはまり込みます。
◆2010/7/6
 まいったな。まだ焼酎飲み始め、外は明るいうちに書いてしまった。通常if then else で書いていますが、今回は昔の感覚を取り戻すため Select Case で書いています。
 さて今夜は何週間ぶりかでTVを見るか、かって録っておいたブルーレイ映画でも見るかな。
◆2010/7/6
 夕方、ふと、今日の日付を取得するのは簡単だけど、じゃ 曜日は ?
 やってみるか… 焼酎飲み始めてすぐでしたね。余りにあっけなかったので拍子抜けしました。このコードはある毎日開くあるファイルを開いたら表示されるようにしました。
 開いて、今日が水曜日だったら、「今日は水曜日です。○○の確定を忘れないように !! 」のメッセージが表示されます。それ以外の日は勿論表示されません。

Private Sub Workbook_Open()
'今日の曜日を取得  2010/7/6 ettomio

  d = Date
  a = Weekday(d)

  Select Case a
      Case 1
        aaa = "日曜日"
      Case 2
        aaa = "月曜日"
      Case 3
                aaa = "火曜日"
             Case 4
                aaa = "水曜日"
             Case 5
                aaa = "木曜日"
             Case 6
                aaa = "金曜日"
             Case 7
                aaa = "土曜日"
    End Select

    If a = 4 Then
             MsgBox " 今日は" & aaa & "です。○○の確定を忘れないように !! "

    End If

End Sub
◆2010/7/6
 日曜日の夜、あるファイルにフォームを表示させてやろうと思いました。ところが出来ないんです。え ? 10年前AccessやVBでは、あれほどフォームを作ってたのに… 10年のブランクは… 結果的には昨夜作りました。チェックボックスが3つ並んでいて、そのどれかをクリックしてOKボタンを押せば、それに対応したマクロが実行されます。
 ただ、フォームは慣れていない人には簡単には作れないと思います。

Private Sub Button1_Click()

If optマニュアル.Value = True Then
MsgBox "マニュアルで操作して下さい。"
Application.Run "配布用確定一覧N.XLS!メニューを開く"
End If

If opt自動.Value = True Then
MsgBox "自動実行します。"
Application.Run "配布用確定一覧N.XLS!自動読込"
End If

If opt印刷.Value = True Then
MsgBox "sheet1〜3まで印刷します。"
Application.Run "配布用確定一覧N.XLS!印刷"
End If

Unload MyForm1

End Sub


Private Sub Button2_Click()
Unload MyForm1
End Sub
◆2010/7/4
' -------------------------------------------
' StarMove3 -- 時間稼ぎの処理を入れる
' -------------------------------------------
Sub StarMove3()
Dim i As Integer
Dim j As Long

Cells(1, 1).Value = "★"
For i = 2 To 10
Cells(1, i - 1).Value = " "
For j = 1 To 50000
Next j
Cells(1, i).Value = "★"
For j = 1 To 50000
Next j
Next i
End Sub

 今日は結局写真も撮りに行かず、14年も前に買ったExcel VBAの本を読んでいました。もう一度初心に戻って基礎から勉強です。
 上記のマクロを実行したところ、一瞬にA1からJ1に★が移動してしまいました。
ですから現在では
For j = 1 To 50000000
ぐらいにして空ループを作ってやらないと、ひとつひとつ移動しているようには見えません。
dim i as long
はそのままでOKです。longは長整数型で-2,147,483,648〜2,147,483,647の範囲の値を扱えますから。
◆2010/7/4
 今朝はちょっとだけ、昨日のプログラムを修正しました。sheet1からsheet3までしかありませんので、それに載っていない製品は「エラーレコード抽出」にマクロボタンで表示され、T列にこれはSheet6aにありますよと、先週表示できるようにしました。末尾のaはそのシートの左側、bだと右側にあるよと、少しでも探しやすくするため、先週すべての製品にこのSheet○a,bを付けました。
 昨日作った検索システムは逆にこのa,bが邪魔になりました。そこでその隣のU列に
=IF(T2="","",Left(T2,6))と入れていました。これでT2にSheet6aとあるのが、U2にSheet6と表示されます。
 しかし、これだと「確定一覧は」現在Sheet9までですが、将来Sheet10とか作ったら、sheet1と表示されてしまいます。
 で、今朝書いた関数が
=IF(T2="","",MID(T2,1,LEN(T2)-1))
len関数で文字数を調べ、それより1つ少ない文字数をmid関数で取り出しています。
◆2010/7/3
 今日のプログラミングは先週の土、日曜日に続く私には大改善です。本当に目に付かない、作業者にとっては確実なデータが来るのは当然と… 当然でなくちゃならないんです。ただ、私は余り苦にしないでぼちぼちやっている、ゲーム感覚ですから。それも焼酎飲みながら… ただ、今回は1年も前から他のBookに対して検索をかけるという夢が、漠然と今日は作れるだろう、そして夜は勝利の美酒に酔っているという予感がしました。昼間から飲んでいますが…
 今日書いたのはコードだけではありません。例えばAM15 15 211Cという製品だとすると親会社からは半角スペースのない、AM1515211Cで来ます。これを関数でAM15 15 211*に直して検索をかけています。末尾のCはそれがAだろうがCだろうが、*というワイルドカードを使って検索をかけています。
◆2010/7/3
 先程書いた、ExcelのファイルをWin7からExcel2007で実行してみました。問題なく動くようです。
ただ、Excel2007ではプログラミングしません。会社の2003で使えませんから。
 Vistaに入れているExcel2003を起動していつもコードを書いています。勿論、焼酎飲みながら・・・
◆2010/7/3
 私の日記は写真か、パソコンに極端に偏っていて、双方が交互に入れ替わっています。TVも新聞もこの2〜3週間全く見ていません。写真に熱中してるときはもうそればっか。パソコンに熱中してるときも・・・ 10年以上前に、カミサンにウチに居ても居なくても同じ事と言われました。
 何故今Excelのプログラミングをしてるかというと、後進に譲るとき、出来るだけ簡単にしてやりたい。そのためにエラー処理も入れ始めました。手入力を極力排し、誤入力が怖いですからね。自動入力、自動出力を目指しています。関数だけでは限界があります。ま、関数も思うように操れませんが、関数だけでは限界があるから、マクロのコードを書くということでしょう。ま、簡単にすれば内部は複雑になりますので、色んなファイルの操作手順に新たにこと細かに書きました。そしてその下に自動実行と書きまして、これは「スタート」ボタンを押すと、殆ど自動です。その両面を記するようにしています。ま、マクロはブラックボックスとなるかもしれません。
 それと、60までに書きたい私には夢のようなプログラムのための布石と思っています。
 明日の天気予報は曇り・・・ 2ヶ月ぶりに新幹線の流し撮りに行くかな・・・ ただ、待ち時間はこの1ヶ月で2万円近くも買ったExcel VBAの本を読むでしょうね。
◆2010/7/3
 お昼を食べる頃から、当然のように焼酎を飲み始めています。いつものように飲みながらのプログラミングです。右手の甲がちょっと痛いです。
 参考文献の役立ちそうな箇所をダウンロードファイルからテキストエディタにコピーします。それに自分なりに変数を宣言したり、新たにコードを書き込んでいきます。
 当然のようにエラーになり、エラー箇所はVBEが教えてくれますから、先頭に ' を付けて ( REM文 ) 眠らせます。何度も繰り返して駄目なら、他の文献を調べたり、あるいは自分の思いつくコードを書きます。そして試行錯誤の末に動くプログラムが出来ます。何だ、これだけの行数と思われても、実際はその何倍もコードを書いては消しています。
◆2010/7/3
 昨夜、「配布用確定一覧」のマクロを書きましたが、これはA3で3枚分の主要製品のデータでして、これに載っていないものは、元の「確定一覧」からコピー&ペーストしています。
 ただ、滅多に出ないものは自分でもどのシートに入れているか分からなくなります。Excel2002では無理だったと思うけどExcel2003からはshhet1〜Sheet9まで選択して、検索ボックスに例えばAM15と途中まで入れれば検索されることは知っていました。これをマクロで出来ないかというのが依然からの願いでした。2週間ぐらい前に、載っていないものはエラー値として、どのSheetに載っているかの検索は出来るようにしました。

 今朝も雨、写真を撮りに行く気はしないし、よしやるか。自動記録マクロでは何も記録されません。完全に書かなくては駄目。
 試しにSheet6と入れて、色々やってたら、該当箇所が表示されました。やった !! 13時45分でした。ここまで5時間かかっています。
 どのシートに載っているかは検索出来るようにしていましたから、そのシート名を変数 sh に入れて… 試行錯誤の末、完成したのが15時前でした。
 ゲームをやらない私にこれこそ私のゲームです。

Sub 値のあるセルに色を付ける()
' 2010/7/3 ettomio
' セルの色は黄色
' Excel VBAプログラミング 280ページ参照。

For y = 2 To 30
  If Cells(y, 22).Value <> "" Then
   Cells(y, 22).Interior.ColorIndex = 6
  End If
 Next
End Sub


Sub セルの色を消す()
' 20107/3 ettomio
' 2を選択すると罫線まで消えてしまう。
' 次にマクロを実行したとき前回の色が残ってしまうのを回避。

For y = 2 To 30
  Cells(y, 22).Interior.ColorIndex = 0
 Next
End Sub


Sub 検索を行う()
' 20107/3 ettomio
'「エラーレコード抽出」シートのV列のあるセルをクリックして
' マクロを実行すると、その前のU列で「確定一覧」のシート名を拾い
' 変数 sh に代入し、そのシートを開いて検索する。
' Excel VBAプログラミング288ページ参照。
' 但し、他のBookを開きシート名を代入してシートを開いての検索だから全くの別物。


Dim key As String
Dim 検索セル As Range
Dim sh As String

 key = ActiveCell.Value
 sh = ActiveCell.Offset(0, -1).Value


 Application.Run "配布用確定一覧N.XLS!確定一覧を開く"
 Windows("確定一覧.XLS").Activate
 ActiveWindow.ScrollWorkbookTabs Sheets:=10
 Worksheets(sh).Select

 Set 検索セル = Cells.Find(What:=key & "*", _
 LookIn:=xlValues, LookAt:=xlWhole, _
 SearchOrder:=xlColumns, MatchByte:=True)
 If Not 検索セル Is Nothing Then
  検索セル.Activate
 End If

End Sub
◆2010/7/3
Sub 自動読込()
'
' 自動読込 Macro
' マクロ記録日 : 2010/7/2 ユーザー名 : ettomio
'
Dim Er As Integer

  Application.Run "配布用確定一覧N.XLS!数値0"
  Application.Run "配布用確定一覧N.XLS!数値読込"
  ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
  Sheets("併合読込").Select
  Application.Run "配布用確定一覧N.XLS!併合読込"
  Range("S2").Select

Er = Range("S2").Value

If Er = 0 Then
  MsgBox "コピー&ペーストは必要ありません。", vbOKOnly

  Sheets("Sheet1").Select
  Range("B1").Select

  Exit Sub

Else
  MsgBox Er & "件以上はコピー&ペーストが必要です。「エラーレコード抽出」を押して、シートを参照し、コピー&ペーストして下さい。", vbOKOnly

End If

End Sub

Private Sub Workbook_Open()
'2010/7/2 ettomio

Dim Ret As Integer

  MsgBox "印刷の際は次の「自動読込」は実行しないで下さい。", vbOKOnly


  Ret = MsgBox("「自動読込」を実行しますか?", vbYesNo)
If Ret = vbYes Then
  Application.Run "配布用確定一覧N.XLS!自動読込"
End If

End Sub

 先日大幅に改善した「確定一覧」はA3で9枚あります。作業者に毎日これだけのものを配っていたら、徒に混乱するだけなので、「配布用確定一覧」というものを使っています。これはA3で3枚で元の「確定一覧」からデータを引用しています。時々、これには登録されていない製品のオーダーがあります。エラー値抽出で元の「確定一覧」からコピー&ペーストしています。
 さて昨夜、この配布用の方をいつものように焼酎飲みながらいじっていました。「自動読込」のマクロを書いたのですが、結果が違います。かなり悩みましたが、書いたコードを読むと
If Er = 0 Then
のErをセルのS2と書いていました。最初にS2の値を変数Erに代入しますよと宣言しているのに…

 さてこのあと、このファイルを開いた途端に実行するマクロを書きました。一瞬にデータを読み込み、メッセージボックスで「3件以上はコピー&ペーストが必要です。「エラーレコード抽出」を押して、シートを参照し、コピー&ペーストして下さい。」と出ますし、エラー値のない場合は「コピー&ペーストは必要ありません。」と出ます。
◆2010/7/1
 今晩は。もう7月に入りましたね。今年も折り返しですか。
 さて私の方は、昨日の夕方、今日の早朝、夕方と仕事で使っているファイルの手順書を3つのファイルに新たに作りました。ウチで焼酎飲みながらやってもいいんですが、会社の電気を使っちゃえと…( 笑い )
 それぞれのファイルに4つの手順を書きました。そしてその下にそれぞれ「スタート」ボタンを押せば手順を完全自動出来るようにもしました。今回はコードは一切書いていません。全部自動記録マクロです。
 例えば、客先の某自動車メーカーの一番の量販車のデータだと、スタートボタン一発で、納品No.や部品庫、時間、数量の詳細と共に、日勤と夜勤、CKDの小計も、10秒後にはA4で4枚プリントアウトされます。

先頭に戻る    過去の日記