|
[No.35 Excel97 VBA CSVから固定長 読者からアドバイス〜] [No.36 ムードメーカーになれない自分〜] [No.37 叱り方は、難しい、エラーチェックのコツ?] [No.38 Ken3本屋の思い出話] [No.39 Ken3の悪いクセ、&””] 広告: |
| No.35 | 1999/12/27 Excel97 VBA CSVから固定長 読者からアドバイス〜 |
[ページTOPへ戻る] |
<Excel97 VBA CSVから固定長 読者からアドバイス〜>
目次
1.はじめの挨拶
2.読者より、アドバイス 関数分割について
3.読者より、アドバイス 自作関数作ってみました
4.質問コーナー?
5.おわりの挨拶
----------------------------------------------------------------------------
/*
* 1.こんにちは
*/
こんにちは。
今回は、前回の積み残し、
Excel97 VBA CSVから固定長
です。読者より2・3ヒントをいただきました。
なぜか、FTPの調子が悪いので、HPは、更新していません
(今回、画像付き、サンプルありませんが、、、)
えっ、画像はいつも見てないって、、そんなこと言わないで、、
見てくださいよ。
(ホントのところは、どうなんだろう?)
/*
* 2.読者より、アドバイス 関数分割について
*/
転載不可、ken3の言葉で書いてください
と書かれたメールでアドバイスをいただきました。
ア.関数は、分割してください。
前回のサンプル、1つのモジュールに詰込んでました。
ファイル名作成・処理・結果をメモ帳で表示。
これだと、1つ1つがわかりにくいみたいなので、
今回、メイン部分と呼び出し側の2つに分けました。
幕ノ内弁当で、おかずのエリアを分けた。。
シャケがおいしければ、シャケだけ抜いて、
シャケ弁当を作りやすいように、
1つ1つの単位に分けるって、大切かもしれません。
*アドバイス、どうもです。
マズイ組み合わせがあったら、そこだけ修正、、後々の流用ですね。
イ.Strconvで変換後処理してみては?
文字コードでバイト数がわからないなら、
strconvで変換後処理してみては?
と、アドバイス含めて、いただきました。
(回答をズバリ書いてくれないのが、ホントはやさしい師匠?)
私なりの答え(再度の味付け)を下記に記載します。
*まだ、変換サイズなどを外部に出すなど、してませんが、、
'--------
Sub TEST_MAIN()
Dim strINFname As String
Dim strOUTFname As String
' csvtotxt.xls のパスを使用して、INファイル、Outファイルの
'ファイル名を作成する
strINFname = ActiveWorkbook.Path & "\Sample.txt"
strOUTFname = ActiveWorkbook.Path & "\out.txt"
'お行儀良く、入力ファイルがアルか、チェックしますか、、、
If Len(Dir(strINFname) & "") = 0 Then
MsgBox strINFname & "ファイルが見つかれません"
Exit Sub 'モジュールを抜ける
End If
'サンプルモジュールをコールする
Call Excel97_CSVtoTXT(strINFname, strOUTFname)
'結果をメモ帳表示
Shell "notepad.exe " & strOUTFname, vbNormalFocus
End Sub
'サンプルモジュール
'固定処理が多いので流用・汎用性が無い、なぁ。。
'サイズを(も)引数で渡したり、工夫しないと、、
Sub Excel97_CSVtoTXT(strINFname As String, strOUTFname As String)
Dim nYLINE As Integer
Dim x As Integer
Dim OUT_FNO%
Dim nOUTSIZE(10) As Integer '10もいらないでしょ、、、
Dim strOUTBUF As String
'入力ファイルをCSVで開く ↓変数に変更
Workbooks.OpenText FileName:=strINFname, StartRow:=1, DataType:= _
xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False _
, FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), _
Array(6, 2))
'出力テキストファイルを作成する
'シーケンシャル ライト モードで開きます
OUT_FNO = FreeFile
Open strOUTFname For Output As #OUT_FNO
'出力先のサイズを代入
'サンプルデータは会員番号1(8桁)、漢字氏名(20桁)、ローマ字
'(18桁)、生年月日(10桁)、会員番号2(10桁)、暗証番号
'(3桁)で構成されています。
nOUTSIZE(1) = 8
nOUTSIZE(2) = 20
nOUTSIZE(3) = 18
nOUTSIZE(4) = 10
nOUTSIZE(5) = 10
nOUTSIZE(6) = 3
'データが無くなるまでループ(A列が空白になるまで)
'おいおい、データが1行しかなかったら、どうなるの?<<<知らない、、
nYLINE = 2 'タイトルを抜かし、2行目から、スタート
While Len(Cells(nYLINE, 1) & "") <> 0
For x = 1 To 6 'AからF列まで処理
strOUTBUF = Cells(nYLINE, x)
'XXバイトに満たない場合、空白を後ろに詰めています
strOUTBUF = LeftB(StrConv(strOUTBUF & Space(nOUTSIZE(x)), vbFromUnicode), nOUTSIZE(x))
strOUTBUF = StrConv(strOUTBUF, vbUnicode)
'データ書きこみ
Print #OUT_FNO, strOUTBUF; '←を付けると改行されない
Next x
Print #OUT_FNO, "" '改行のみする
nYLINE = nYLINE + 1 '忘れないようにカウントアップ
Wend
Close #OUT_FNO ' ファイルを閉じます。
End Sub
'--------
こんな感じです。
/*
* 3.読者より、アドバイス 自作関数作ってみました
*/
無いものは、自分で作ろうって、こころ、忘れてた、、、
読者からいただいた、固定長、右スペース埋め関数です。。
'----------------------------------------
Public Function SetKoteicho(input_str As String, length As Integer) As String
Dim check_char As Integer 'Asc関数で全角かどうか調べる文字の位置
Dim sjis_length As Integer 'シフトJIS換算の文字数
Dim sjis_code As Integer '文字コード(シフトJIS)
Dim output_str As String '固定長に変換した文字列
sjis_length = 0
check_char = 1
Do
sjis_code = Asc(Mid(input_str, check_char, 1))
'文字コードから全角文字か半角文字かを調べる
If sjis_code > 256 Or sjis_code < 0 Then
'全角文字
sjis_length = sjis_length + 2
Else
'半角文字
sjis_length = sjis_length + 1
End If
check_char = check_char + 1
Loop While (check_char <= Len(input_str))
'必要なだけスペースを加える
output_str = input_str & Space$(length - sjis_length)
SetKoteicho = output_str
End Function
'--------------------------------------
'下記のようにコールすると、使用できます
For x = 1 To 6 'AからF列まで処理
'感謝して、関数を使用する、、、
strOUTBUF = SetKoteicho(Cells(nYLINE, x), nOUTSIZE(x))
'-----------↑^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Print #OUT_FNO, strOUTBUF; '←を付けると改行されない
Next x
'--------------------------------------
ありがたいですね、、、ホント。
/*
* 4.質問コーナー?
*/
----------
>VBでVoice Clockを作ってみたいのですが...
>簡単な方法が有りますか。
>朝、昼、夕方の三回だけしゃべってくれればいいのですが。
----------
タイマーイベントのネタで使用かなぁ、、、
ネタようにメモメモ。
/*
* 5.終わりの挨拶
*/
今回、読者任せでした(厨房を貸して、料理作ってもらった?)
年末ですね、、、来年は構想を考えて、
少しは、講座らしくしようかなぁ?
では、また。 三流PG Ken3でした。
| No.36 | 2000/01/05 ムードメーカーになれない自分〜 |
[ページTOPへ戻る] |
<ムードメーカーになれない自分〜>
目次
1.はじめの挨拶
2.やらかした、三流PGの2000年問題1発目
3.ムードメーカーになれない自分
4.口直しに、ExcelVBAからIEを起動
5.おわりの挨拶
----------------------------------------------------------------------------
/*
* 1.こんにちは
*/
こんにちは。
今年もヨロシクお願いします。
(参考になるとこだけ、拾い読みして、下さい)
新年あけてから、やってしまいましたねぇ、、、
続きは次の章から、、、
/*
* 2.やらかした、三流PGの2000年問題1発目
*/
新年出社後、電話が鳴る。
おっ、2000年OKコールかな?
世の中なんでもなかったし、、なんて寝ぼけた頭に入ってきた言葉が
「00」年が入らないんだけど、、、
えっ、、、入らないですか???そんなハズは、、と思いつつ、
現実を受け止め、入力不可の場所を聞く。
FD登録画面ですか、、見直して見ます、、と電話を切る。
みんなが社長の挨拶を聞くために、場所移動している中、
一人ソースを見る。
if(yy <= 0) {
なんて、いつでも見つけられそうなチェックが入っていた、、、アレ?
まぁ、現実入っていたので、電話でお客さんを遠隔操作し、
ソースを開いて、行を削除してもらいました。。
その後、コンパイル、、、リンクで、無事終了。。。
あ〜あ、、やっちまったよ。。。
で、もっとカッコ悪いのが、
2000年関係で、しくじったの、、私だけでした。。。
なんか、出だしから、調子が狂った一年です。
このさき、クレームいくつ来るのかなぁ、、ことしは、、
先が思いやられる、、
*テメエが自分で言うなって、、、
/*
* 3.ムードメーカーになれない自分
*/
そんなこんなで、朝から不機嫌モードでスゴシテマシタ。
なんか、私の不機嫌?チームのメンバーに伝染するみたいで、
場の空気が今日は、暗かったですね。。。反省。
少しは、周りに影響を与える立場なんだから、
やっちゃったよ、、ぐらい、笑ってたほうが良かったかも?
(でも、笑ってたら、上司が激怒なんだろうなキット)
初の事故報告書作成、、、理由、、
チェックが甘かったじゃすまされないしなぁ、、
まぁ、適当に書いて出すけど、、、
*その心が次のバグを生むのでしょうキット
(新人さんは、マネしないでね。。)
話は、少し変わって、
グループ作業など、ムードメーカーって必要だと思います。
私のグループ、実力あるんだけど、ムード暗くって、、、、
自分がムードメーカーで盛り上げればいいんだけど、
自他ともに認める気分屋なので。。。
もしかして、職人さん達だから(うちの三本柱は)、
あまり、気にしないのかなぁ。
新人君達は、質問できる空気じゃないと言ってるし、
私も静か過ぎるのはニガテだけど、
「進捗どう?」って聞いても、みんな順調なんだよなぁ、、、
システム屋さんの集まりで、ムードを盛り上げる方法知ってたら、
教えてください。
ヨロシクお願いします。
今年は気分屋卒業しないと、、、のKen3でした。。
で、終わっても良かったんだけど、
やっぱ、1つは、サンプルプログラム載せなきゃね、、ってことで、
/*
* 4.口直しに、ExcelVBAからIEを起動
*/
口直しに、下記、
Excel VBAからIEを起動のサンプルです。
( hosoku/036/index.html
からサンプルをダウンロードできます)
'------------------------------------------------------------
'IE5.0 連続起動テスト
'お気に入りページを連続で開く
'朝一番で、5・6ヶ所、巡回している人向け
Sub IE_OPEN_TEST()
Dim oIE As Object
Dim nYLINE As Integer
Dim time3 As Date
'確認を取る、、、
If MsgBox("IEを起動します", vbYesNo) = vbNo Then
Exit Sub
End If
'IEのオブジェクトを作成する
Set oIE = CreateObject("InternetExplorer.application")
'見えるようにする、、、逆に見えなくて巡回もあり?
oIE.Visible = True
'見出しを抜かした2行目から、URLを開く
nYLINE = 2
While Len(Cells(nYLINE, 1) & "") <> 0
Cells(nYLINE, 1).Select
DoEvents
'セルに代入されているアドレスを表示する ,1で新しいウインドウ
oIE.Navigate Cells(nYLINE, 1), 1
'ここで無効なアドレス(読めなかったとき)の処理を入れたい
'今は、手抜き、、、
'3秒後を計算して、待つ 待たなくてもいいんだけど、、、
time3 = DateAdd("s", 3, Now())
Do While Now() < time3
DoEvents
Loop
nYLINE = nYLINE + 1
Wend
oIE.Quit '一番始めの空のIEを閉じる、、、
'行儀良くクリアした時、不正な処理で落ちたことあり、、なぜ?
'oIE = Nothing
End Sub
'-------------------------------------
自動巡回ソフトを目標に、正月休みにトライしたのですが、
IEを開くのと、URL指定しかわからなかった。。。
次のステップは、ソース(HTML)をHDに保存し、
リンク先を読み込み、階層処理。。。
/*
* 5.終わりの挨拶
*/
新年頭から、気分屋まるだしでしたね、、、
まぁ、そのうち落ち着くでしょうキット。
プログラムは、気分で作ります、、、
プログラムの生産性は気持ちで違います、、、
と言っていた頃がなつかしい。。。
*リーダーもどきの呪縛?から開放されたい、、
向いてないって、、
なんて、グチがでたとこで、終わりにします。
昨年の積み残しもまとめないと、、、。。。
では、また。 三流PG Ken3でした。
| No.37 | 2000/01/22 叱り方は、難しい、エラーチェックのコツ? |
[ページTOPへ戻る] |
<叱り方は、難しい、エラーチェックのコツ?>
目次
1.はじめの挨拶
2.叱り方は難しい? 3流リーダー〜
3.またまた、他力を頼る、エラーチェックをうまく入れるコツ
5.おわりの挨拶
----------------------------------------------------------------------------
/*
* 1.こんにちは
*/
こんにちは。
久ぶりに、本編のグチ、行ってみたいと(言ってみたいと)
思います。
(って、いっても、プログラム関係はまだなんだよね、、、)
お時間のある人は、3流リーダーのグチ、、、聞いてください。。。
/*
* 2.叱り方は難しい? 3流リーダー〜
*/
チーム内のナンバーから、下記のメールをモライマシタ。
------------------------------------------------------
>○○です。お疲れ様です。
>
>○○商店のmdbをサーバーにコピーしておきました。
>ご確認をお願いします。
>
>※出来が悪くてすみませんでした・・・。
> また引き続きチェックお願いします。
>
>※入力画面を作るときに、
> エラーチェックをうまく入れるコツというか・・・
> 例外の発生状況をうまく見つけられる方法があれば
> 教えてください・・・。
> →基本なのに一番出来ていないと思うので
-----------------------------------------------------
なんか、そんなに言ったつもりは、
無かったのですが、本人(女性)、ヘコんじゃいました。
なんか、叱り方、難しいなぁ、、と感じてます。
本人のためになると思って言ったのですが、
なんか、うまく、伝わらなかったみたいです。
(どうでもイイヤツには、注意しないって、、)
また、みんなの前で注意?もいけなかったかも?
会議室に呼び出して、一対一の方がよかったかもしれません。
叱る時は、タイミング・場所を選ばないと、、、
チョットいいわけしていいですか?
どうぞ。
相手が女の子だから、会議室に呼び出すの、抵抗があったんですよ。。
*書いてる途中ですが、
自分へ一言、
相手が女性とか言ってるから、三流リーダーなんだよ、、、テメエは。
ホントによくなってもらいたいなら、
女性・男性の区別なく(年上・年下の年齢もそうですが)
注意や指導しなきゃ、、、
/*
* 3.またまた、他力を頼る、エラーチェックをうまく入れるコツ
*/
みなさんへ質問です(参考意見を聞かせてください)
エラーチェックをうまく入れるコツ
って、どんなのですか?
また、今回、
文字数チェックや001と1のチェックなどが
ボロボロで注意したのですが、
やはり、仕様書にエラーチェックは
・これと
・それと
・あれ
をチェックすること
としっかり書かないと、いけないのでしょうか?
*今回、後輩のミスとなっているが、
実はKen3の設計書がオカシカッタ、、
とも、別角度から見ると考えられる。
設計書には、日本語で、下記のようにあいまいに書いてあります。
-------------------------
4.設計条件
本システムの基本設計条件を以下に記述します。
(1)簡潔なモジュール化をはかること。
(2)カラー(色)の割付は、全体を通じて一貫性を持たせること。
(3)操作は、全体を通じて一貫性を持たせること。
(4)メッセージは簡潔に、わかりやすく表示すること。
(5)エラー処理は確実に行うこと。
(6)システムテストは確実に行うこと。
テストデータ・テスト結果の納品
(7)固定処理を極力減らし、汎用性を持たせること。
Range("A1").Value = "XX" <--- 表が毎年可変になるため固定処理を無くす
5.OS 及び 開発言語
5.1 ネットワークOS
Microsoft Windows NT Server
------------------------------
(5)エラー処理は確実に行うこと。
しか書いてなく、どんなエラー処理を行うか
が
明確に記述されていない、、、これが問題か、、、
*今回みたいな、業務の失敗談、もっと聞きたいですか?
それとも、プログラムテクニック系のほうがいいですか?
ご意見、感想、待ってます。
/*
* 5.終わりの挨拶
*/
今回もプログラムに関係無いネタでした。
プログラム関係のマルマガを読んでいる読者から
よく他のXXXXの作者を見習って、
もっと勉強してから書け
とか、いろいろ、文句もらってますが、
現在のAB型変わり者スタイルで進めると思います。
(こんな感じのグチマガ?一つぐらいあってもいいでしょ)
一番残念なメールは、プログラム関係だと思って登録しましたが、
違うみたいなので、すみませんが解除します。
と丁寧にメールくれる人です。
*黙って、解除してよ、、
あっ、文句の一つも言いたくなる気持ちもわかりますが、、、
では、また。 三流PG Ken3でした。
| No.38 | 2000/02/02 Ken3本屋の思い出話 |
[ページTOPへ戻る] |
<Ken3本屋の思い出話> 目次 1.はじめの挨拶 2.いろいろ、メールありがとうございました。 3.読者数について、、 4.おわりの挨拶 ---------------------------------------------------------------------------- /* * 1.はじめの挨拶 */ こんにちは。 今回も個人的なグチメールです。 (おいおい、また、ですか、、、 はやく普通にプログラム関係書こうよ、、、、、) お時間のある人は、3流君のグチ、、、聞いてください。 /* * 2.いろいろ、メールありがとうございました。 */ 前回のメルマガ(NO.37)に対して、 いろいろとお返事いただき、どうもです。 (自分へ一言、、いっぱいメールが来たように書くのがうまいなぁ、、 ホントは、6人しか、アドバイスメール来てないでしょ、、 あっ、イヤガラセ?メールは、大量にあったかな?) エラーチェックについて引用させていただきますが、 ----- >私の場合は処理速度に問題がなければ考えられるところにはすべて入れます。 >こんなエラー起こるはずがない。というようなところも入れます。 >デバッグにも役立ちますから。 > >マクロを作って、デバッグ用と完成版とでスイッチするというのも手ですね。 >そのかわり、デバッグ時だけ有効にするのか完成版でもチェックすべきなのか、 >迷うことはありますが。 ----- みなさんへ(特に自分へ) エラーチェック入れ過ぎて困ることはなさそうですよ。 納品時とデバック時の切替えのテクニックですね。 *おっ、って発見があったら、得意げにメルマガに載せます。 また、こんな本を読んでみては?とアドバイスいただきました。 ----- >「Writing Solid Code」(Microsoft Press) > >という本があるのですが、この本、ひたすらエラーチェックを >どうすればよいかということについて書いてある本です。 >プログラムをする人間にとっては、非常に価値の有る一冊だと思います。 >ぜひ一度、読んでみてください。 ------ >Visual Basic バク退治法(ソフトバンク) >は どうでしょうか? ------ ここでチョット脱線して、 Ken3本屋の思い出話を、、、 かわいいお姉さんがバイトしてて、、よく通ったなぁ、、 じゃなくて、 技術関係の本、高いです。(なんでだろう、、、) 新人でお金の無い頃(いまもねえだろ、、ウソつくな) 昼休みや夕方、立ち読みをしてました。 で、本の間に入っている読者アンケートハガキや、 注文用の小さな紙?(なんて言うんだろう?) をしおり替わりにして、時間をかけて毎日読んでました。 *本屋の敵だぞコイツ、、、 で、その本が売れちゃった時は、、、少し悲しいものが、、、 *まねしないで下さいね。。。 話を元に戻して、 キツイご指摘もいただきました。 ------ >はじめはテクニック系を期待していたのですが(耳タコでしょうか(笑))、 >業務の失敗談も面白いです(^^;) >「転ばぬ先のつえ」として読ませて頂いてます(笑) ------ は、かわいいご指摘ですね、 >> それとも、プログラムテクニック系のほうがいいですか? > >これは期待できないので、 おっ、来ましたね。。。ホントのこと言われると少しコタエル。。 >> *今回みたいな、業務の失敗談、もっと聞きたいですか? > >こっちの方が面白いかも(比較の問題だけどね。) やはり、、、まぁ、このメルマガ1つの売りだから。 あとは、解除したい人は勝手に解除するので、 好きなように書いてください と励まされました。。 (そうなんですよね、あまり読者の顔色気にしなくても、、 まぁ、気にするところがKen3らしい、、Ken3色だけど、、) /* * 3.読者数について */ 読者数について、、おかげさまで、1300人居ます。
| ↑今は870(2002/12)かなりの減少 |
| ↑やはり熱意の差かな? |
| No.39 | 2000/02/11 Ken3の悪いクセ、&”” |
[ページTOPへ戻る] |
<Ken3の悪いクセ、&””> 目次 1.はじめの挨拶 2.「 & "" 」、私の個人的なクセです。 3.操作者への心遣いって 4.おわりの挨拶 ---------------------------------------------------------------------------- /* * 1.はじめの挨拶 */ こんにちは。 芸術的なプログラムが書けない、Ken3の独り言です。 お時間のある人は、お付き合いください。 では、3流君のグチ(今回は悪いクセ)、、、聞いてください。 /* * 2.「 & "" 」、私の個人的なクセです。 */ 前回のメルマガに対して、 いろいろとお返事いただき、どうもです。 *もうヤメチマエメールなど、熱心に送ってくれる方、 ありがとうございます。 (いろいろ、面白いですよ、また、いっぱいくださいね) 自分へ一言、、、↑こんな書き方するから、変り者って言われるんだよ、、、 さて、いつものくだらない前置きは、これくらいにして、 私のソース記述の悪い癖について、今回は、書きたいと思います。 「 & "" 」について、質問メールをいただきました。 回答は、私の個人的なクセです。 後輩にも同様の注意されてるんだけど。なかなか、治っていない。 よく、空の文字列などをチェックするときに、 if len(strMOJI & "") = 0 とやり、 ソースを見た人が、なんだこりゃ、、 ””+して文字数を見る、、素直にIs Nullや何かできけと言われてます。 *ストレートな表現になってないと、、、、 また、ファイル名作成処理(GetDBPath() & Me![画像ファイル名]) が数回使われているとのご指摘。 たしかに、、、頭で生成しのほうが素直だし、速いですね。 *これがループの中だったら、チリも積もれば山となるで、、、 書き方も三流らしく、個性的でイイジャン なんて、開き直っちゃダメです(自分へ強く) まぁ、同じ動作するプログラム、いろいろ書けますが、 シンプルなのが一番、わかりやすくて、速いと思います。 *ホントに思ってんの?なんて声が後輩から聞こえそうですが、、、 下記の指摘・参考意見メール、、、を見て、みなさんもいろいろ感じ取ってください (テメエが一番感じ取れって、、はいはい。。。) ------------------------------------------------------------------------- In message "Re: [ 三流 PG 番外編今日の一品 No.010] Acc97 Picture プロパティ", >2月10日配信の >>====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*= >>[ 三流PG 番外編 今日の一品 No.010 ] 2000/02/10 木曜日 発送予定 >>=*====*====*====*====*====*====*====*====*====*====*====*====*====*====*==== >から、Empty値がらみのエラー対策のように見える、「 & "" 」が >ちょっと気になったのでメールさせて頂きました。 >以下チョット目を通してください。 >>---------------------------------------------------------------------------- >><Access97 Pictureプロパティ> >>Private Sub 画像ファイル名_AfterUpdate() >> >> '入力データ無しのときは、処理しない >> If Len(Me![画像ファイル名] & "") = 0 Then > #If Me![画像ファイル名] = vbNullString Then > #なんてことはできないのですか? > #それに 「 & "" 」って必要なんですか?(Empty値がらみ?) > #'********************** > # Dim StrPictureFileName As String > # StrPictureFileName = Me![画像ファイル名] > #更にここをTrim$(Me![画像ファイル名]) > #として空白のみ文字列に対処したほうがよい > #かと > # If StrPictureFileName = vbNullString Then > # ・・・・・・ > #'********************** > #とすればEnpty値がらみのトラブルは起きないはずです・・ > #何度もデータベースファイルにアクセスする必要が減り > #高速化するかと・・(可読性は変わらないと思います) >> Me![図].Picture = "" >> Exit Sub >> End If >> >> 'ファイル存在チェック >> If Len(Dir(GetDBPath() & Me![画像ファイル名])) = 0 Then > #それにここを含め GetDBPath() & Me![画像ファイル名] > #を2回使用しますが、上記同理由で変数に保存してそれ > #を使用したほうがよいと思います > #'********************** > # StrPictureFileName = GetDBPath() & StrPictureFileName > # If Dir$(StrPictureFileName) = vbNullString Then > #'********************** > ですね >> MsgBox GetDBPath() & Me![画像ファイル名] & "ファイルが見つかりません >>確認してください" >> Exit Sub '途中で抜けます >> End If >> >> '画像のセット >> Me![図].Picture = GetDBPath() & Me![画像ファイル名] > #Accessではこんな事できるんですね、勉強になります。 >> >>End Sub >>'-------------------------------- >AccessVBAを使用したことがないので、使えない関数を書いたかも >知れません。 >また、根本的にVBAの流儀に反したコードなのかも知れません。 >そんな時は、鼻で笑って「馬鹿なメールだ」で済ませてください。 >とにかく、何のための「 & "" 」かが、解らなかったのでEmptyが >らみではないか想像して、それならこの方がスマート(高速化副産 >物もある)とメールした次第です。 --------------------------------- どうですか? いろいろと考えさせられましたよね? (考えさせられたのは、私だけ?) また、メルマガ読みなおしていたのですが、 No16でも、同じようなことやっていて、 Null関係、宿題にしたままでした。 (このへんの心が、悪い癖をそのままにしている原因?) -------------------------------------- In message "[三流PG No.016] Access97編 質問内容 詳細と回答、、", >/* > * 3.気になったこと、、Null関係 >*/ >Null関係でメールをいただきました。 >---- >>「[三流PG No.014] 第二回 反省会? と クリック広告について」の >Accessとか、VBAで関数の引数にNullを渡すと、 >エラーになるので、 >「moji & ""」とかNZでかわしますよね。 >(私、&””が好きです、NZはかっこよくて私には、チョットあわない) >VBAのNullについて、機会を作って、書きたいと思います。 >Nullについて熱く語りたい方は、Ken3まで、メールください。 >楽しい毒舌まってます。(←また、日本語変だぞ、、、気にしないでよ) --------------------------------------------- でも、、なんか、Nz関数や、Is NULL、、私の口にはには、あいそうも、、 なんて言ってるから、三流君なんだよね。キット。 自分へさらに一言、後輩の見やすいプログラムを参考にして、少しはやったら? /* * 3.操作者への心遣いって */ 操作者への心遣いって、考えたことありますか? (かっこよく言うと、人にやさしいシステム・プログラム) *ムダなエラー印刷ばかりで地球にやさしくないプログラム 作成する人に言われたくないね。 そんなことを気が付かせてくれるメールをいただきました。 ------------------------------------------------------ In message "ACCESS画像関係", >>お知恵を借りたいのですが、AC >>CESSで画像付き社員リストを >>作りたいのですが、 >>サンプルファイル(Image. >>jpg)のような帳票を作るには >>どうすれば良いでしょうか? >>このイメージにこだわることはな >>いのですが、 > >ということですが前回画像を取り上げてもらったときと同じですね > >あれからフォームで次の様にしました > >まづテーブルには各社員に対応する画像ファイルのファイル名を格納する >画像file名というフィールドを設定しファイル名のみを格納する >フォームにはイメージオブジェクトを適当な大きさにして貼りつけ[社員画像]としま >す >毎回表示するのは少し遅いのでボタンを押したときだけ表示する為 >社員表示というボタンを作りました >ファイル名を呼び込む為の[画像file名]も表示しておいて・・・ > >Option Compare Database >Const PictPath As String = "C:\社員画像\" '画像ファイルパス名 >Option Explicit > >Private Sub Form_Current() > Me![社員表示].Visible = False > Me![社員画像].Visible = False > If Not IsNull(Me![画像file名]) Then Me![社員表示].Visible = True >End Sub > >Private Sub 社員表示_Click() > If Len(Dir(PictPath & Me![画像file名])) = 0 Then > MsgBox Me![画像file名] & "ファイルが見つかりません" > Exit Sub > End If > Me![社員画像].Picture = PictPath & Me![画像file名] > Me![社員画像].Visible = True >End Sub > ----------------------------------------------- あっ、と思ったのは、 >毎回表示するのは少し遅いのでボタンを押したときだけ表示する為 >社員表示というボタンを作りました の部分です。 確かに、連続入力・修正など、画像確認がいらない時、 表示が遅いと、気になります。 このへんの積み重ねが、良いシステムと悪いシステムの差になると思います。 わかった、変り者のKen3さん <--> はい。 少し前に話題になった、エラーチェックなども、 システムのできに大きく影響します。 オイ、聞いてんのかよ。。 /* * 4.終わりの挨拶 */ 今回、いい指摘メール・参考メールをいただいたので、 プログラムの内面の気配り、外面(操作性)の気配り をテーマに書こうとしましたが、なかなか、うまく書けませんでした。 回り道しないで、気配りってタイトルのほうがよかったかも? なんて思いつつ、今日も逃げるようにサヨナラです。 感想・・・・ご指摘・・・・文句・・・など 気軽に掲示板に書いてください。 では、また。 三流PG Ken3でした。
ここまで、読んでいただきどうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。
質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
|
感想や質問・要望・苦情など 三流君へメッセージを送る。 時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。 |
項目別に↓に本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。
[ルーキー rookies]・・・ 新人さん達 初心者さんへ
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話
[共同作業 team]・・・チーム、グループ作業
[プログラムは心? spirit]・・・プログラマー 心・気質・魂
[掲示板デビューしようぜ bbs]・・・掲示板関係の話、質問者・回答者の気持ちほか
[昔はできた seo]・・・三流式の効果無しSEOとアフィリエイト
[仕事や作業、転職 job]・・・仕事や転職、評価、作業など
[その他 etc]・・・その他 分類外の記事
※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。
Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]