AB型の変わり者 三流プログラマー 業務の愚痴

[バックナンバー目次] [掲示板] [メルマガ登録・解除] [愚痴系TOPメニュー]

バックナンバー No.25 〜 No.29


[No.25 第3回 質問・要望 進捗状況]
[No.26 Dim objExcel As New Excel.Application を後輩に教わる]
[No.27 いろいろな攻め方、攻略法(画像サイズ関係)]
[No.28 Access97 画像リンク処理(埋め込みでMDB肥大を防止?)]
[No.29 旅日記、、、今回のキーワードは営業?]

広告:


No.25 1999/12/02
第3回 質問・要望 進捗状況
[ページTOPへ戻る]
<第3回 質問・要望 進捗状況>
目次
1.はじめの挨拶 
2.質問内容 と 要望
3.おわりの挨拶
----------------------------------------------------------------------------
/*
 * 1.こんにちは
*/
こんにちは。
現在までに来た、質問内容と要望を簡単にまとめました。
その他リクエスト・付加質問、、、過去のメルマガ素朴な疑問、
また、オレが答えてやる、、の腕自慢の方、気軽にメールください。

/*
 * 2.質問内容と要望
*/

計測器とのやりとり(RS−232C?)
-----
> 毎回楽しく見させてもらっています。今回質問させてもらいたくメールします。
>実は、アプリケーションだけの閉じた開発だけでなく、周辺機器(特に計測機器
>等)との双方向のデータのやり取りをやってみたいのです。
> 具体的には、第一にEXCELないしはACCESS(VBAを使って)で計測機器のデータ
>をリアルタイムに取り込みたいのです。いろいろ調べてみたのですが、EXCELや
>ACCESSだけでは、実用的でないとかタイミング等の問題で無理がある等の記述が
>あり、現在悩んでいます。
> そこで、私のような計測機器のデータをリアルタイム的に処理するプログラム
>を開発して、プログラムの世界を広げたいと考える者のために新しい企画を立て
>てもらいたくメールしました。また、上記の趣旨に関する情報(メールマガジン
>、HPおよび書籍等)をお知らせくださればと考えています。
-----
メルマガの内容、よく読んでいる人だなぁ、、、
工場関係の仕事やってるから、
計測器もやっているだろう、、と読みましたね。
昔作成したのが、使えそうなら、解説してみます。。。


ファイル関係の処理
(1)ファイル名の拡張子を一括で変換したい
------
>@フリーソフト等では既にありますが、VBによる拡張子一括変換ソフ
>トウェア。
> フリーソフトの場合、扱えるファイル数の制限が少ないため、非常に
>使いづらい(1,000件位い)のです。
> 例えば、ファイル総数10,000件の拡張子jepg→jpgに変換すると
>か。
>Aファイル名一括変換
>  データベース(例えばCSVファイル)をもとにファイル名を一括
>変換するソフトウェア
>  例:1234567890.TXT→1234 5678 90.
>TXT
>    TOKUMEI.JPG→KIBOU.JPG
> 多分、貴兄なら簡単に作成できると思いますので、VBの題材として
>取り上げて下さい。
>取り上げて頂けるようお祈りしています。
------

関連
------
>先日のメルマガの「拡張子一括変換」でDOSのコマンドを使え、との
>ことですが、
>結果(DOSのコマンドを使えばできるのは分かります)、ではなくV
>B(ビジュアル系)で、
>どう処理をすれば良いか、経過を知りたいのです。
>現在、あるフリーソフトの不満なところなのですが、起動時はいつも同
>じフォルダーです。
>テクニックとして知りたいのですが、一度使ったホルダー名をini
>ファイルに書き込み、次に立ち上げた時に前回のフォルダーからスター
>トできるとか。
------
INIファイル、、レジストリ関係かな、、、

(2)バックアップツール
> 現在VB4でバックアップツールを作ろうと思っています。
> 完全に素人知識ですけど、普通にテキストファイルを扱ったりすることは
> できます。
> バックアップディレクトリを指定する所まで作成できたのですが、
> ファイル走査ができません。
> たとえば、
>
> C:\
>   |--Winfile
>   |      |--Windata1--Windata1-2
>   |      |    1.txt      1.txt
>   |      |    2.txt      2.txt
>   |      |    3.txt      3.txt
>   |      |    4.txt      4.txt
>   |      |    5.txt      5.txt
>   |      |--Windata2
>   |      |    1.txt
>   |      |    2.txt
>   |      |    3.txt
>   |      |    4.txt
>   |      |    5.txt
>
>----------------------------------------
> こういう構造になっているとして、
> 「C:\Winfile\」以降全ファイル・ディレクトリをバックアップしたい場合、
> どう、ファイル一覧内部で作って、データを持っておけばよいのか
> わかりません。
> バックアップ先は、MOかネットワークドライブにします。
> 容量的には少ないので、分割・圧縮の方法は考えないものとします。
------
コピー元ファイル名の取得(ディレクトリ付き)
と、コピー先へのコピーか、、、
dir , mkdir , いろいろ、使うのかぁ、、、


テクニック?疑問?
(1)配列内の値を高速サーチしたい
------
><質問>
>アクセス97のVBAで、例えば下記の様な配列をセットしたとします。
>
>    Dim AryID(1 To 5) As String
>    AryID(1) = "10"
>    AryID(2) = "20"
>    AryID(3) = "30"
>    AryID(4) = "40"
>    AryID(5) = "50"
>
>で、例えば "30" という値が上記配列の何番目に格納されているかを
>一発でわかる方法をご存知ですか?
>今はとりあえず "Do - Loop" で回して聞いています。
>ですが、実際にはもっと大きな配列を使っているので、
>いちいち "Do" で回すより、一発でサーチ出来た方が楽だし早いのではと
>思っています。
>何か良い方法がありましたら、教えて下さい。
------
ハッシュと二分検索の話題、ここででたんだなぁ、、、

(2)Null関係の疑問
----
>「[三流PG No.014] 第二回 反省会? と クリック広告について」の
>修正された xSP_Cnv について
>
>moji が Variant で定義されているので
>Null が入っていた場合エラーが発生します
>この場合は、Null の時は何もしないで
>Null を返す方がいいと思います
>(細かい内容ですみません)
>
>処理を継続するためには
>別の変数に ""(長さ0の文字列)を入れて処理するか
>文字列関数で 「moji」 で処理しないで
>「moji & ""」か「Nz(moji)」で処理をするといいと思います
----
null関係の特集、、、やろうと思ってたのに、忘れてた。

(3)ACCESS2000不思議な現象?
-----
>やはりACCESS2000になると便利になってる部分ありますね、
>けど私も一度全てACCESS2000にアップグレードしたんですが
>一番困ったのが表形式のフォームの高さ(詳細部分)が勝手にちじんで
>いちいち高さを伸ばしてCtrl+Sでセーブしても又いつのまにか
>ちじんでしまうんですよね。
>ACCESS97ではCtrl+Sでセーブした時の高さのまま使えるんですが
>ACCESS2000ではいつも詳細部に5データが表示されていたのに
>いつのまにか1データしか表示できないくらいにちじんでしまいます。
>フォームプロパティの設定を色々変えて試したんですが
>うまくなおらないので結局ACCESS97に戻して仕事をしているんです。
----
ACCESS2000使用していないので、わからないのですが、
どうなんでしょう?

テキスト変換系
(1)半角カタカナからヘボン式ローマ字
-----
>教えて欲しいのですが、Excel、またはAccessで半角カタカナからヘボン
>式ローマ字に変換したいのですが、良い方法はないでしょうか?
>変換のテーブルを作るのはいとわないのですが、
>高速に処理する方法はないでしょうか?
-----
>さて、「ヘボン式ローマ字」について意見をのべさして頂きます。
>このVBAはヘボン式ローマ字変換用ではありません。
>ヘボン式ではカトウは「KATOU」ではなく「KATO」です。
>シンジュクは「SHINJYUKU」
>シンバシは「SHIMBASHI」
>後に「B、M、P」がつく場合、NがMに変わります。
>http://www.nta.co.jp/kaigai/hebon.htm 
>ヘボン式ローマ字一覧表を参考にどうぞ。
-----
ここで、私の無知・仕様をキチント見ない、、がバレてしまった。

(2)漢字のフリガナを自動的にフリたい
-----
>漢字にフリガナを自動的にふりたいのですが、できますか?
>データが1万件あって、過去のデータにフリガナの項目が無く
>検索キーとして、正しくなくてもフリガナを入れたいのです
-----
あらあら、、、フリガナなしのデータに適当に振りたいですか、、、
IME関係のAPIで漢字・単語から、ヨミを返すって、、あるのかなぁ、、
なんか、無いような(ヨミから変換候補はありそうだけど)
または、
人名辞書から、漢字とヨミを抜き出して、
マッチングさせて作るとか、、、

Outlookのデータを処理したい
-----
>実は以前MicrosoftからフリーでACCESS97からOutlookのデータへ
>リンクかインポートできるというものがでていたんですが
>Outlook5には対応してなくて困っています。
>そこでACCESS97からOutlook5(Outlook Express5も)へリンクする方法を
>お願いいたします。
-----

画像関係質問
(1)accessで画像(写真)をデータベース
-----
>さて、現在、accessで顔写真入りの名簿システムのようなものを
>作っていますが、画像(写真)をデータベースのテーブルに保持しておくには
>ちょっと、システムが重くなりそうなので、CD−RWやMOから読み書き
>できるようにしたいとおもっています。
>
>例えば、マイクロソフトのフォトエディタを指定して、
>画像の読込みをできるようなサンプルを教えて
>いただけませんでしょうか。
>
>すいませんが、ご教示よろしくお願いします。
>(当方素人のため、素人レベルで理解できるような
>サンプルであれば幸いです。)
>
-----
>アクセスでデータを写真付きで3000件ぐらい
>入れているのですが、そろそろ写真の容量がいっぱいになると
>言われています。画像だけなら1M、データだけでもだいたい1M
>なんですが、アクセスに一緒に落とすと1Gにもなると言っていました。(多分・・・)
>今までアクセスができる人が居たのですが、彼は退社してしまったので、
>私がわけのわからないものを引き継いでしまいましたので、アクセス2000に
>バージョンアップすれば少しは容量が増えるのではないかという素人案なのですが
>どうですか?
>ちょっと長くなりましたが、なにか簡単ないい案があれば教えてください。
-----
2人から、同じような感じの質問来ました。
なんか、簡単な方法は、無いのだろうか?

(2)画像ファイルのピクセル数
>Access、またはExcel上で画像ファイルのピクセル数を取得する
>のにはどうすれば良いのですか?
>イメージを添付ファイルにしてあります。
>宜しくお願いします。
>ファイル名:Image.jpg
-----
画像ファイルのピクセル数を求める方法、知っていたら教えてください。
私Ken3は、お手上げ(バンザイ)です。。。

ヤッパ三流、、、の声が聞こえたところで、サヨナラです。。。

/*
 * 3.終わりの挨拶
*/

質問・要望あったら、掲示板に遠慮無く。

では、また。  かぜぎみで調子の悪い三流PGのKen3でした。

No.26 1999/12/02
Dim objExcel As New Excel.Application を後輩に教わる
[ページTOPへ戻る]
<Dim objExcel As New Excel.Application を後輩に教わる>
目次
1.はじめの挨拶 
2.移動中、お昼の時も、色気の無い技術話、、、
3.お飾りは、、サビシイなぁ。。。
4.メルマガ見にくくなりました
5.おわりの挨拶
----------------------------------------------------------------------------
/*
 * 1.こんにちは
*/
こんにちは。
まぐクリックのいたずらか、、、24,25と連続で発行したみたいです。。
*テメエの操作ミスだろ、、、操作ミスをシステムのせい、OSが悪いなんて、、
 まったく、どこかのおじちゃんオペレーターの方が、まだましだよ。

でも、届いていない人、いるみたいだよ?
う〜ん、、なんだろう?
1号から、見てます、24号抜けた?みたいなので、
送ってください、、みたいなメールありました。

コレクションじゃないから、1号抜けても、、いいでしょ?
えっ、送りなおしてほしい?
読者を大切にしないと、解除されちゃうよ。。。

今日は、技術話、あまりないので、ヨロシク。

いつものことでしょ、、、ハイハイ。
.
/*
 * 2.移動中、お昼の時も、色気の無い技術話、、、
*/
水曜日、私のチーム(Ken3システムチーム)
三本柱の一人、21歳のかわいいお嬢さんと、
二人っきりで、客先に納品に行ってきました。。。
*人は、外見じゃない、、、めちゃくちゃ、実力あります。
21歳なのに、エース級です。
まぁ、そんな人物紹介は、置いといて (えっ、気になる、、5行で人の興味を引くなんて、大物だねぇ) 今日、納品のシステム、お決まりパターンの Access97でデータ管理 --> Excel97で表作成でした。 道中、先輩リーダーらしく? 今後やってみたいことや、プログラムの中身について、話してました。 *周りから見たら、電車の中で変な会話?だったんだろうな、、、 まぁ、ここまでは、普通の話で、 Access側でオブジェクト作成して、作ってるの? それとも、Excel内にVBAを置いて、処理してるの? と今回納品のシステムの話を始めました。(←) *オイオイ電車の中でかよ、、カンベンしてよ  体調不良で、熱あんだから、寝てりゃよかったんだよ、、、今思えば、、、 ここで、いきなり、知らない単語出る。 Dim objExcel As New Excel.Application えっ、何それ、、と思いつつ、よく聞いてみる。 (一流の人は、もうピンと来たかもしれませんが、、、、) 話を引っぱって、 私、No21.VBやAccessからExcelにデータを書き込む で Dim oApp As Object 'Excel を起動 ' ↓Accessウイザードで作成されます Set oApp = CreateObject("Excel.Application") と解説しましたねぇ、、、自分でも、おぼえてます。はい。。。 始めは、やってること・結果、同じだからいいかなぁ? と思っていたのですが、気になって、今調べてみたら、 なんと、 Dim objExcel As New Excel.Application と書くと、 ソース上で、 objExcel. とピリオドを打った時点で、 エクセルのプロパティ・メソッドが出るじゃないですか、、、 大変驚きました。ホントですよこれ? 驚きの画像は、下記↓を見てください。。ホントカヨ、、これ知ってれば、、、 hosoku/026/index.html かなり、ソース作成時に、影響でそうです。 みなさんも、 Dim objExcel As New Excel.Application この書き方・行儀作法、、、おぼえておいて下さい。 枠外解説・グチ --- プログラマーに年齢は、関係ないようで関係ある? 21なのに、エース級です。と書きましたが、(反感くること狙って書きました) プログラマーに年齢、、、ハッキリいって、関係ないです。 と私、思ってます。 が、技術経歴書なんて物を書くと、 3年目のできるPGと5年目・7年目のPGを見せると、 5年目・7年目のPGのほうが経験積んでるから、安心そうに見え、 単価的に、3年目のできるPGよりも、高い単価になりやすいです。 (出向単価や外からもらえる単価 の場合、、、受託請負は関係無いけどね) 技術経歴書なんて、嘘っぱちのもの信じちゃダメですよねぇ。。。 私の経歴書みたけど、、、水増し多いし、、、要求分析なんて、最近でしょ始めたの、、 三流PGが二流SEぐらいで、書いてある。 *PGとSEって書き方(分け方)、嫌いなんですが、イメージつかむために書きました。 あと、年齢関係無いで印象的なのは(できごとは) 私が20の時(もう、7年前か、、、) 当時、先輩と処理方法でもめてた時、 課長に、 「どちらをとっても影響の無い処理なら、先輩のほうが採用されるよ」 「くやしかったら、2つぐらいは上の意見を言わないとダメだよ」 と言われました。 そんななぐさめ?でも納得できなくて、 「紙一重上でもダメなんですか?」と言いながら、 机をたたき・ゴミ箱をヘコマシ(後で、厳重注意、、を受ける) 一人泣いて夜中コーディングしなおした記憶あります、、昔話だけどね。。。 そんな経験したので、後輩の好きなように作ってもらっているつもりです。 *でも、後輩からみたら、ゆずらない先輩と思われてるかもね。。 /* * 3.お飾りは、、サビシイなぁ。。。 */ 今日、初めて、お飾り状態、味わいました。 お飾り状態--->上司がタダいるだけの状態? インストール・客先説明の頭から、やってもらい、 とくにトラブルも無く、無事に終了。 さすが、うちのエースは、、と思いつつ、何も無かったのがさびしかった。。。 あっ、これがお飾り状態ね、、、なれないとなぁ。。。 枠外解説・グチ --- ピッチャーからキャッチャー、、コーチ・監督へ、、、 今まで、自分が作業者だったので、好きなようにやれて、心配もなかった。。 今は、キャッチャーで、ピッチャーの調子をみながら、リードしていく立場かな? そのうち、コーチ・監督へ、、、 名文句で、名選手・名監督にはなれない、、、ってあったなぁ。 えっ、心配しないでも大丈夫? なんで? テメエは、名選手じゃなかっただろ、、、あっ、そっか。。。納得。 ふざけて書きましたが、自分がプログラム・システムわからなくても、 管理している管理者、すごいと思います。 今の自分だと、最悪、自分で後始末つければイイヤ的な部分があるので、 管理?していません。 オレは、管理野球が嫌いだ、、、もカッコいいけどねぇ。。。 /* * 4.メルマガ見にくくなりました。 */ ある読者より >ken3さんは硬派かと思ってたんだけど、広告に手を出したんですね。 >メルマガ見にくくなりました。 なんて、言われちゃうし、、、 チョット金、、なんて、思ったのが、 送信遅延や送信されなかった?で、読者に迷惑かけてたのかなぁ、、、 でも、意外だったのが、硬派? メルマガの印象からだと、、軟派の方が強いと、思ったけど。 今回は(も?)特に、硬派っぽくないような。。 読者あってのメルマガ、、考えさせられますね。 /* * 5.終わりの挨拶 */ 質問・要望あったら、 掲示板に気軽に書き込んでください。 一緒にワク外でグチってくれる人、、大募集です。 では、また。  今日は、昔話・近況、、グチ多しの 三流PG Ken3でした。

No.27 1999/12/03
いろいろな攻め方、攻略法(画像サイズ関係)
[ページTOPへ戻る]
<いろいろな攻め方、攻略法(画像サイズ関係)>
目次
1.はじめの挨拶 
2.読者よりヒントメール来ました
3.BMPファイルフォーマットから攻める
4.画像をインサートして攻める
5.おわりの挨拶
----------------------------------------------------------------------------
/*
 * 1.こんにちは
*/
こんにちは。
今回は、Excelを使用して、画像のサイズを求める、、
をやってみたいと思います。

いろいろなアプローチで攻めてみたいと思います。

意中のあの子をオトスニハ、、、
攻め方変えても、テメエじゃムリだな、、、
あっそ、、、話が変な方向に行かないうちに、始めますか?

*プログラム解説より、変な話の方を期待した人、スミマセン。
  三流だけど、プログラム講座なので、、、
   でも、少しだけ期待にこたえて、
    どんな攻め方でも、落とせれば(成功すれば)、いいんですよ。
     泥臭いやり方、カッコ悪いアプローチでも、、、

/*
 * 2.読者よりヒントメール来ました
*/
じゅんねこ さんより、下記のヒントメールをいただきました。 少し感激。
どうもです。
*まだ、試していないので(消化不良なので)、そのまま、載せます。
-------
>さて、以前の[三流PG No.025] の回で、「Excel、Accessで画像のピクセル数を知る
>には?」という質問がありましたね。
>で、今回、[三流PG No.026]で解決しているのかな?と思ってたら、何も記載されて
>いなかったので、少し自分なりに解決方法を考えてメールを送りました。
>
>一般的にVBAで扱われる画像のサイズは画像の長さやtwipsを単位としています。そこ
>からピクセル数を算出することは、ディスプレイのサイズや解像度を考慮に入れる
>と、どうしてもVBのScreen.TwipsPerPixcelX的な関数(プロパティ)が必要となると
>思うのですが、それがない限り難しいのではないでしょうか。
>
>Excel、Accessではなく、例えばVB5.0だと以下の式でピクセル数が出ると思います。
>
>--->
>    Dim pic As StdPicture
>    Dim w As Integer, h As Integer
>
>    Set pic = LoadPicture("c:/temp/sample.jpg")
>    '' Pictureのサイズは0.01mm単位
>    '' また、1cm(100.0mm) = 567dipsなので
>    '' Screen.TwipsPerPixelX(Y) は 1ピクセルあたりのtwips
>    w = pic.Width * 567 / 1000 / Screen.TwipsPerPixelX
>    h = pic.Height * 567 / 1000 / Screen.TwipsPerPixelY
>
>    MsgBox "[" & w & "," & h & "]"
><---
>
>多分、この方法で間違いはないと思います。
>で、ExcelやAccessにこれを置き換えればいいですよね。
>
>1.オブジェクトStdPictureを使用するためにStdOle2.Tlb(OleAutomation)を参照設定
>で追加する。
>-> もしかしたら、StdPictureにこだわらなくても、既存のコントロールで何とかな
>るかもしれない。イメージコントロールとか。
>
>2.オブジェクトScreenを使用するためにVB5.OLBを参照設定で追加する。
>-> VB5.OLBはVB5.0をインストールするとついてきます。
>
>VB5.0は場合によっては、VB6.0になると思います。
>
>ただ、この方法の難点はオブジェクトScreenを参照するためにはVB5.OLBが必要だと
>いうことです。
>VBでピクセル数を算出するActiveXを作成して、それを呼び出すというのも手なので
>すが、どちらにしろVB5.0の実行環境が必要になると思います。
>・・・ActiveXを利用するとか言い出したら、なんでもかんでもVBで作成すればい
>いって、言われそうだ・・・。
>
>もしかしたら、他にいい方法があるかもしれません。
>ちょっと僕には思い付きませんが。
-------------------

VBで作った、オブジェクトを登録して、呼んでみる。
面白そうですね。いろいろ、応用もききそうなので、
今度試してみます。

またぁ、、簡単に言っちゃう、、、ドンドン課題?増えるねぇ
講座候補として
「VBでオリジナルオブジェクト作成、Accessで使用」
ができちゃったジャン。

あっ、やってみようかな、、、と思っただけですよ(急に逃げ腰、、、)

みなさん、興味ありますか?

/*
 * 3.BMPファイルフォーマットから攻める
*/
BMPフォーマットのベッダ情報、から、サイズを求めてみようと思います。

hosoku/027/index.html
から027.LZHを落とし、
bmpsize.xls を実行しながら、見てください。

下記、Excel VBA
----
Type Record                    'ユーザー定義型を定義します。
    BmpType     As String * 2  'BM固定のハズ、、チェックで使用?
    BmpFileSize As Long        'ファイルサイズ、、ホントかな?
    BmpYOYAKU1  As Integer     '固定で0?
    BmpYOYAKU2  As Integer     '固定で0?
    BmpImgOff   As Long        'イメージ配列までのオフセット値
    BmpInfoSize As Long        'インフォ構造体のサイズ
    BmpWidth    As Long        '横幅 ピクセル
    BmpHeight   As Long        '縦幅 ピクセル
    BmpYOYAKU3  As Integer     '固定で1?
    BmpEtc      As String * 10 '....その他情報
End Type

'メイン処理
Sub main()

    Dim nYLINE As Integer
    Dim strCHKFILE As String

    nYLINE = 2 '見出しを抜かして、2行目から処理
    
    'ファイル名が無くなるまでループ
    While Len(Cells(nYLINE, 2)) <> 0
        'ディレクトリとファイル名をつなげて、作成
        If Right(Cells(nYLINE, 1), 1) = "\" Then
            strCHKFILE = Cells(nYLINE, 1) & Cells(nYLINE, 2)
        Else
            strCHKFILE = Cells(nYLINE, 1) & "\" & Cells(nYLINE, 2)
        End If
        Cells(nYLINE, 3) = GetBMPSize(strCHKFILE)
        nYLINE = nYLINE + 1
    Wend

End Sub


'ファイル名を受け取り、サイズを99×99の文字列で返す
'ファイルが開けない時は、Err とする。。。
Function GetBMPSize(strFNAME As String) As String

    Dim MyRecord As Record
    Dim Position            ' 変数を宣言します。
    Dim FNO%

    If Len(Dir(strFNAME) & "") = 0 Then
        GetBMPSize = "ERR : File Not"
        Exit Function
    End If

    FNO = FreeFile

    ' サンプル ファイルを ランダム アクセス モードで開きます。
    Open strFNAME For Random Access Read As #FNO Len = Len(MyRecord)
    ' Get ステートメントを使って、サンプル ファイルを読み込みます。
    Position = 1                      ' レコード番号を定義します。
    Get #FNO, Position, MyRecord        ' 1 番目のレコードを読み込みます。
    Close #FNO                          ' ファイルを閉じます。

    If MyRecord.BmpType = "BM" Then     'タイプを判断
        GetBMPSize = MyRecord.BmpWidth & "×" & MyRecord.BmpHeight
    Else
        GetBMPSize = "ERR : Format Err ?"
    End If

End Function
----

考え方、、、BMPファイルなどの画像ファイルには、
頭に、サイズや色の数、、などの画像情報が入っていると思います。
その情報を直接読んで見ようかなぁ、、なんて、考えてみました。

BMPお嬢さんの頭の中は、なんとなく読めたのですが、
JPGお姉さんの頭は、複雑?なので、わかりませんでした。
JPGお姉さん攻略法、GIF坊、、、知りたいですね。

プログラムポイント解説
Type Record で ヘッダ情報の構造を定義
    BmpType     As String * 2  'BM固定のハズ、、チェックで使用?
    BmpFileSize As Long        'ファイルサイズ、、ホントかな?
    ・
  ・
End Type    

Dim MyRecord As Record で 定義した構造の変数を作成

頭、1件だけを読み込む
-----
    ' サンプル ファイルを ランダム アクセス モードで開きます。
    Open strFNAME For Random Access Read As #FNO Len = Len(MyRecord)
    ' Get ステートメントを使って、サンプル ファイルを読み込みます。
    Position = 1                      ' レコード番号を定義します。
    Get #FNO, Position, MyRecord        ' 1 番目のレコードを読み込みます。
    Close #FNO                          ' ファイルを閉じます。
-----

読み込んだ情報にデータが入っているはず、、、(ホントかなぁ、、)
-----
    If MyRecord.BmpType = "BM" Then     'タイプを判断
        GetBMPSize = MyRecord.BmpWidth & "×" & MyRecord.BmpHeight
    Else
        GetBMPSize = "ERR : Format Err ?"
    End If
-----

こんな感じで、BMPは、OKそうです。。。
いろいろ、深いので、構造など、試してください。

/*
 * 4.画像をインサートして攻める
*/
頭の中、読もうとしても、ダメなので、
行動あるのみ?(でも、いきなり告白は、マズイでしょ、、もっとリサーチしようよ)
で、
画像を実際に表示して、サイズを測ってみました。

hosoku/027/index.html
から027.LZHを落とし、getsize.xls を実行しながら、見てください。

下記がExcel VBA サンプルです。
----
'メイン処理
Sub main()

    Dim nYLINE As Integer
    Dim strCHKFILE As String

    nYLINE = 2 '見出しを抜かして、2行目から処理
    
    'ファイル名が無くなるまでループ
    While Len(Cells(nYLINE, 2)) <> 0
        'ディレクトリとファイル名をつなげて、作成
        If Right(Cells(nYLINE, 1), 1) = "\" Then
            strCHKFILE = Cells(nYLINE, 1) & Cells(nYLINE, 2)
        Else
            strCHKFILE = Cells(nYLINE, 1) & "\" & Cells(nYLINE, 2)
        End If
        Cells(nYLINE, 3) = GetSize(strCHKFILE)
        nYLINE = nYLINE + 1
    Wend

End Sub

'ファイル名を受け取り、サイズを99×99の文字列で返す
'画像ファイルを挿入し、サイズを計算する
Function GetSize(strFNAME As String) As String

    'ファイルの存在をチェックする
    If Len(Dir(strFNAME) & "") = 0 Then
        GetSize = "ERR : File Not"
        Exit Function
    End If

    'テスト位置E6に画像ファイルを読み込む
    Range("E6").Select
    ActiveSheet.Pictures.Insert(strFNAME).Select
    
    'Selectionって?便利?  TypeNameねぇ、、、
    MsgBox "選択されているオブジェクト型は" & TypeName(Selection)
    'なんか違うのは、、、画面のせい???
    MsgBox Selection.Width & "×" & Selection.Height
    
    'リターン値を作成
    GetSize = Selection.Width & "×" & Selection.Height
    
    '選択図形を削除、、、証拠を消す、、、
    Selection.Delete

End Function
----

なんか、端数が出て、合わないんだよなぁ、、、なんでだろう?
これなら、JPGお姉さんもOKかと、思ったのにねぇ。。。

う〜ん。。。

/*
 * 5.終わりの挨拶
*/

今回、目的の処理を達成するために(達成してませんが)
いろいろな方法・手段がある、、、と感じてくれれば、、、

アドバイス(女の子を落とす方法含む)←また、女性読者減ったな確実に、、、
あったら、
気軽に掲示板に書いてください。

またまた、一言いい?
いいですよ。
実力無いヤツが、いくら彼女にアプローチしても、ダメだよ。
ギク。。。

では、また。

今日は、健康診断で採血した 三流PG Ken3でした。 *診断結果が怖いね、、

最後の捨て台詞?--- 採血で4回も注射器さしなおしやがって、、一回で決めろよ。。
          *新人さん、左でダメで右を、、もダメで左、、
            最後は、ベテランさんが強引にやり、右2回目でOK
             テメエもソフトのベテランならテスト1回で決めろよな
              はいはい。。。。

No.28 1999/12/05
Access97 画像リンク処理(埋め込みでMDB肥大を防止?)
[ページTOPへ戻る]
<Access97 画像リンク処理(埋め込みでMDB肥大を防止?)>
目次
1.はじめの挨拶 
2.読者よりヒントメール来ました
3.単体テスト用に作成してみますか、、、
4.モジュールの解説、、とイベントって?
5.積み残し、、、あったらいいな、、、
6.おわりの挨拶
----------------------------------------------------------------------------
/*
 * 1.こんにちは
*/
こんにちは。

今回は、前回読者からいただいた、
ヒントを利用して、
Access97 画像リンク処理(埋め込みでMDB肥大を防止?)
をやってみたいと思います。

*なんか、サンプル、、そのまんまじゃん、、、

読者数も、解除・新規登録を繰り返して?1000人突破しました。
*まぐまぐの読者数1000人って、まだまだ、少ないみたいです。
 (すごく、下のほう)
 喜んで、ランキングのページ見に行った、自分がはずかしい。。。
 マニアックな読者を減らさないように、がんばります。
 おまえだけが、変り者だって、、、あっ、そうですね。。。

↑今(2002/12)、870人かなり減った(笑)
/* * 2.読者よりヒントメール来ました */ 読者さんより、Access画像管理のヒントメールいただきました。 >フォーム,レポートで・・・ >---------引用--------------------- >実行時にイメージコントロールの Pictureプロパティにファイル名を >セットするという方法を使っています。 > >具体的には >画像を任意のフォルダに入れておいて > >イメージ.Picture = strPath & 部品名 & ".jpg" > >を実行します >strPath は任意のフォルダです。 > >この場合画像のファイルの名前を特定できるように"部品名.jpg"等にする工夫は >必要です。 > >テーブルに画像を入れるとMDBが巨大になるのであまりお勧めできません >---------引用終わり------------- サンプル作成して、試してみたいと思います。 /* * 3.単体テスト用に作成してみますか、、、 */ さて、ヒントをもらったので、 単体テスト用に作成してみますか、、、 ( hosoku/028/index.htmlに画像付きあります) 目的 大きなプログラムや処理を作る前に、 イメージ.Picture の使用方法を見てみたいので、 簡単なテストプログラムを作成してみる。。。 (同時に、ヘルプなどを見て、自分なりに確認してください。) 内容 簡単に(手抜きで)、 フォームを1つ作成 ファイル名入力用のテキストボックス作成 画像表示用のイメージコントロール作成 で、いいかな。。 作業開始と試行錯誤、、、(こんな簡単なので、試行錯誤してしまった、、、) まず、適当な名前で、Mdbファイルを作成します。 ここの名前のつけ方で、センスや想像力、、語学力(単語知ってるか)、 わかっちゃうんだよなぁ、、、 テメエのセンスは?最低ランクだなぁ、、、 ほっといてくださいね。 次に、フォームを新規作成します。 まぁ、ここまでは、順調です。 次に、イメージコントロールをフォームに貼ります。 貼りつけ時、勝手に、画像ファイルを選べ、、と出てくるので、 適当に選択します。(もしかして、キャンセルでもいいかも) ( hosoku/028/index.htmlに画像付きあります) 画像が、挿入されます。 プロパティを変更します。 ・コントロールの名前を付けます。ここでは、日本語で図としました ・ピクチャータイプを埋め込み-->リンクに変更します ・あとは、サイズなどを適当に、、 *いろいろ、プロパティを変えて、違いをテストしてみてください。  配置・全体表示など、、、イロイロ面白いですよ。 次に、画像ファイル名入力用のテキストボックスを作成します。 プロパティ 名前を、画像ファイル名とします。 イベントの更新後処理にモジュールを書きます(まぁ、テストなので) me![図].Picture = me![画像ファイル名] として、 入力されたファイル名の画像をリンク表示するように指定します。 右ボタンのビルドって便利です? モジュールの入力中に右クリック・ビルドを選択します。 オブジェクトの構造が、階層で表示されます、、 なれないうちは、便利ですよ(だんだん、入力したほうがよくなるけど、、) ( hosoku/028/index.html#011に画像付きあります) さて、テスト実行だ、、、あれ、、エラー、、、だ、、 いつもの勢いで、test.bmpなんて、いれたら、 ファイル名が無かった、、 押したくないけど、デバックを押す。。 ( hosoku/028/index.html#015に画像付きあります) 変数名にマウスカーソルをあわせると、値が表示される、、、便利ですね。 *デバックモード嫌いなので(Ken3は、変り者だから、、あまり活用していない、、) 下記のファイル存在チェックをモジュールに入れました。 If Len(Dir(Me![画像ファイル名])) = 0 Then MsgBox Me![画像ファイル名] & "ファイルが見つかりません、確認してください" Exit Sub '途中で抜けます End If まったく、手抜きするからテメエは、、、テストだから、いいジャンね。。 気楽にいこうよ、、、デバッグモード便利とかわかったジャン。。 テスト実行、面倒ですが、フルパスでファイル名を入れてください。 例)c:\windows\セットアップ.bmp , d:\001.gif など、、 何回、実行しても、MDBのサイズが変わらないことを確認して、 テストOK。。。 読者のヒントメールに感謝です。 オイオイ安心するな(ご指摘)/う〜んまだイマイチここは(質問) などあったら、掲示板に、気軽に書いてください。 /* * 4.モジュールの解説、、とイベントって? */ 今回、フォーム・テキストボックス 画像ファイル名 の更新後イベントに、下記のモジュールを追加して、処理しました。 ---- Private Sub 画像ファイル名_AfterUpdate() 'ファイル存在チェック If Len(Dir(Me![画像ファイル名])) = 0 Then MsgBox Me![画像ファイル名] & "ファイルが見つかりません、確認してください" Exit Sub '途中で抜けます End If '画像のセット Me![図].Picture = Me![画像ファイル名] End Sub ---- モジュール内のポイントは、 Me![図].Picture = Me![画像ファイル名] とすると、入力されたファイル名の画像を表示できるのと、 If Len(Dir(Me![画像ファイル名])) = 0 Then でファイルの存在チェックをしています。 *1つ言ってよい?  また?ですか、、いいですよ。  ファイルの存在チェック、、これ、c:\aaa.txt とかテキストファイル指定されたら、  どうなるの?  あっ、、、なんか、お腹が痛くなってきた。。。  (エラー処理って、深いですよ、、、みなさんも、よく考えて、、想像して、、) 全体のポイントとして、イベント処理があります。 パターンとして、なにかしらのイベントが発生したら、 それに対して、処理を行う、、ような感じです。 新人君、仕事しないで、ボーットしてる(指示待ち/イベント待ち) *まぁ、息すって、何かしら動作待ちしてますね。 会社の外線・内線が鳴る、、無視する(このイベントには反応しない) 自分の携帯が鳴る、2コール以内で反応、外に出て受け処理に入る (イベントに対する、処理がある) XX君チョットと呼ばれる、、イヤイヤながら、ハイと返事する、、 定時5分前、、帰りの準備イベントが発生(タイマーイベント?) って、感じで、人それぞれ、いろいろなイベントに対応して、 動作をしてます。(そんな、単純じゃないけど、、、) Accessやほかのシステムでよく、見かけるのが、 ボタンなどのクリックイベントです。 実行ボタンが押されたら、この処理を実行などのモジュールが記述されている。 またまた、前置き、長かったですが、 今回は、入力されたファイル名が、変更されたら、画像を変えたかったので、 フォーム・テキストボックス 画像ファイル名 の更新後イベント AfterUpdate() にモジュールを書いて処理しました。 書く、モジュールのタイミングなど、 msgbox "更新後呼ばれました" など、入れて、試してみると、いいかもしれません。 枠外解説・グチ --- イベントの優先順位 イベントには優先順位があります。 更新後イベントが発生する前に変更時イベントが発生するなど、、、 レコード更新後イベントでキャンセルイベントを発生させるなど、 イベント処理、奥が深いので、別の機会に詳しくやりたいと思います。 例)データ登録時、在庫を確認して、無ければエラーメッセージを表示して、    登録イベントをキャンセルするなど、、 例)新人君、残業イベント発生、、女の子に電話、、予定があったら、    残業イベントキャンセル /* * 5.積み残し、、、あったらいいな、、、 */ 簡単な、テストを作って、感じたこと。。。 サイズが大きい画像や小さい画像をうまく表示したい。 まぁ、写真など、画像のサイズが決まっていれば、問題無いんだけど。 *イメージデータのサイズを自動的に調整したいな、、、と思った。  もしかして、プロパティでできるのかな? あれ、これ、違う質問で、BMP,JPGのサイズを知りたい、、につながるかも。。 前回のパラメーターを保存したい。 一回フォームを閉じると(再立ち上げすると) 入力エリアが空白になる、、前回の値を保存。。 これも、、どこかで聞いたような。。 あとは、テーブルを作成して、 実際の社員マスターと画像ファイル名でリンクして、 MDBが肥大しない、、ですね。。。 簡単な質問・要望、、待ってます。 枠外解説・グチ --- 素人のフリをしたプロ? 最近、質問受けるのですが、どうもわかってて聞いてる人、いるような気がする。 *ホントの素人さんの質問もあります。。気を使い過ぎかなぁ? 客先でも、たまにいるのですが、 素人のフリをしたプロ? やっかいです。 知ってて、わからないフリをして、こちらの実力を試している? なんか、客先のできる担当者に誘導?されたみたいに、、 いろいろコントロールされてるような? そんなに気にしなくても、テメエの実力なんて、わかってるって? そうですよね。。。 /* * 6.終わりの挨拶 */ 今回、目的の処理を達成するために(達成してませんが) 簡単なテストプログラムから作成してみる、、、 こんな開発手順もあるんだ、、と感じてくれれば、、、 質問・要望・アドバイス・・・・ご指摘など あったら、掲示板に気軽に書いてください。 素人のフリしたプロ・ホントの素人さんのなんでも質問・要望メール大募集です。 では、また。 今日は、BBS・掲示板めぐりでつかれた 三流PG Ken3でした。

No.29 1999/12/07
旅日記、、、今回のキーワードは営業?
[ページTOPへ戻る]
<旅日記、、、今回のキーワードは営業?>
目次
1.はじめの挨拶 
2.読者数を増やすために、営業活動、、、
3.営業方法、、、
4.おわりの挨拶
----------------------------------------------------------------------------
/*
 * 1.こんにちは
*/
こんにちは。

今回はキーワード、営業、、、を書いてみたいと思います。
*言語関係、ありません。
 読者からのハイパーリンクヒントと新規要望を巻末に付けてありますが、、、

今回は、息抜き発行です。
*一息ついて、次回からスパート?....できたらいいな。

枠外解説・グチ --- 営業に間違えられること、よくあります。。。

私、自称、バリバリのソフト屋さんなのですが、
なぜか、よく、営業に間違えられる?
まぁ、今は、営業活動も少しはしないといけない立場?
になったから、いいんだけど、、、

三年前ぐらいに、同じ歳の営業と、打ち合わせに行ったとき、
私がいろいろ、しゃべってばかりで、営業君はだんまり
だったので、私が営業さん・ダンマリ君が技術屋さん、、
と思われたみたいです。

しゃべる技術屋さんは、いないと、、思われてる。。。
そんなことない、、と思っているのですが、、、、

メルマガで愚痴る技術屋は、もっといねぇダロって、、、
あまりいじめないで下さいよ。。。

/*
 * 2.読者数を増やすために、営業活動開始
*/
前回、読者数も、解除・新規登録を繰り返して?1000人突破しました。
と書きました。

始めの1週間は、うなぎのぼりだったのですが、
勢いも減り、5人増えては、3人減る、、みたいな感じで、
1000前後で、行ったり来たり、、

よし、BBS・掲示板めぐりでもして、新たな読者を開拓しよう
と思いました。

今は(2002/12)もっと減って900以下
また、迷惑営業はじめるかな、、、
/* * 3.営業方法、、、 */ クリックがどうの、、とかいろいろ書いていたので、 少しは、関係している、友人のところから、 ログを頼りに巡回して、メッセージを書き込みまくって、 攻めてみました。。。 ( http://click.gaiax.com/home/kanaaki/main ↑暇な人は、行って見て下さい。。    内容の薄い(無い)、     クリックグループ内でお金稼ごうとしたページ?です )
↑今はリンク切れです、
そろそろ、リンクの旅?も飽きてきたので、 次に目を付けたのが、私のメルマガ見るのって、 コンピュータ関係・言語に歓心のある人だから、 プロフィール検索で、プログラマーを探してみよう。。。 あれ、思ったより、出てこない。。 まぁ、いいか、ここから攻めてみるか。 *新たにメルマガ読者に引きこまれた方、スミマセン、  無差別にBBSメッセージ攻撃でした。。。 これが、意外と大変、、、個人のページに飛んで、 プロフィールのところから、BBSをクリックして、 新規発言、、、カットアンドペーストで内容を打ち込む。 を繰り返し、おこなってました。 *同じような、差し障りの内文章を貼りつけていました。  ホントなら、始めにプロフィール見ているので、  音楽好きなんですか?どのジャンルですか?  など、その人にあった、質問するべきなんだけど、、、
↑最近はBBS荒らしソフト?
があって、掲示板に固定文章を書き込めるのあるらしいけど。。
ここで、1つ発見、、、画像の表示をOFFにしよう。 これ、効果ありました。とても速くページの移動できます。 *掲示板荒しの人は、ぜひお試しを。。。
↑荒らしちゃダメですよ
でも、キレイナ背景とかボタン、見れなくって、 なんか、味気なく、だだ、事務的に貼りつけているだけでした。。
↑コピー文章はカッコ悪いよね
しばらく、2時間ぐらい、、、繰り返して、 あることに気が付く、 あれ、私の書く前の発言、今年の3月だ、、 もしかして、放置されたまま、誰も管理していない(誰も見ない) ページに、一生懸命、メッセージ貼ってたの???バカだぁ〜 *放置されたままのページ、かなりあります。
↑無料のHPって放置されているHPかなりある
気を取りなおして、 次に行った攻撃が、新着日記ってページに、 新規に更新したページが載ってます。
↑更新情報を載せてる無料ページ
日記の更新があるなら、その人はアクティブと判断?
ここから無差別にリンクをたどり、 味気ないメッセージを置く、、、 *ここで、バカやりました、、、リンクが相互リンクになっており、   同じメッセージを2度3度書いてしまい、お叱りメールをイタダキマシタ。 そんな、こんなで、土日、活動してました。 活動してみたい人は、 http://www.kigaru.com/kyodai.html に行くと、いろいろなグループ?あります。
↑今はリンク切れです
枠外解説・グチ --- 心のこもっていない営業活動は効果が無い 実際の仕事でもそうですが、 心のこもっていない営業活動は効果が無い、、ですね。 ただ、「こんにちは、HPに来てください、、」 の1行をたくさんバラまいたところで、効果ありませんでした。
↑そんな荒らし行為やってたのか?昔の自分にビックリ
自分のメルマガの売り?の 「読者から指摘されてる三流プログラマーです」 を追加したところ、ぼちぼち、人が来るようになりました。 HPのカウンターは増えるが、購読者はあまり増えませんが、 でも、バックナンバーを見ての感想が来るようになったので、 少しは、効果でてきたみたいです。 あと、返事を少しでも速く出すように努力してます。 *新規の顧客獲得も大事だけど、   昔からお世話になってるお客さんを大切にしないと、    ダメですが、、、
*このバックナンバー見てる人居るのだろうか?
/* * 4.終わりの挨拶 */ 事務的に行うものは、何事も効果が無いかなぁ、、、 と今回、思いました。 一番効果があるのが、BBS・ML・会議室などで、 みんなの疑問に答える常連さんになって、 さりげなく、HPのアドレスがあって、 行ってみたら、メルマガやってんじゃん、、登録しよう、、 の流れが、時間はかかるが、成功しそう。 実際のソフト屋さんの営業は、、どうすれば、、とも考えてしまいました。。。 モジュールだけ作っていた若い頃がなつかしいです、、、 (自分さえ良ければ良かった頃が、、) まぁ、今のチームをまとめて行くのもイロイロあって、楽しいけど。。 感想・・・・ご指摘など あったら、掲示板へ気軽に書き込んでください。 では、また。 週の頭から、いろいろ活動中の 三流PG Ken3でした。

ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。

質問や要望など メッセージを送る(三流君に連絡する)

質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。
あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい



(感想や質問・要望 メッセージはHPで記事に載せることがあります。)


急ぎで連絡がほしい、そんな時は:[三流君連絡先アドレス]を見て連絡してください。

リンクや広告など

項目別に↓に本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。
[ルーキー rookies]・・・ 新人さん達 初心者さんへ
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話
[共同作業 team]・・・チーム、グループ作業
[プログラムは心? spirit]・・・プログラマー 心・気質・魂

[掲示板デビューしようぜ bbs]・・・掲示板関係の話、質問者・回答者の気持ちほか
[昔はできた seo]・・・三流式の効果無しSEOとアフィリエイト
[仕事や作業、転職 job]・・・仕事や転職、評価、作業など
[その他 etc]・・・その他 分類外の記事

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]



[三流君(TOP ken3.org へ戻る)] / [プログラマー業務の愚痴] / [バックナンバー 一覧]