====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*= [ 三流PG 番外編 今日の一品 No.023 ] 2000/04/13 木曜日 発送予定 =*====*====*====*====*====*====*====*====*====*====*====*====*====*====*==== 三流PG 番外編 今日の一品 は 隠し味として、 軽めのVBA関係のサブルーチンを載せていきたいと思います。 ----------------------------------------------------------------------------
久しぶりにスパムメールでイジメラレテイルKen3です。 まだ、70通ぐらいだから軽いほう? ってのは、置いといて、 今回は、マジメなメールに対する回答、 久しぶりに、VBA 関係?です。 *なんて大きく言ってますが、たいしたことないです。 あっ、逃げないで下さい、そろそろ、まじめに始めますから。 下記のメールをいただきました。 ------------------------------------------------------ In message "以前お願いした件", >以前、お願いしたDBを基にした、ファイルの名前変換プログラム。 >Accessを使ってできませんか? >データベースには受験番号と学籍番号を用意します。 >ファイル名は受験番号.jpgになっていますが、 >一括にてデータベースを参照しながら、学籍番号.jpgに変換できませんか? >もう、そろそろ、本題の始末もお願いします。 In message "ファイル名変換について", >リクエストしましたデータベースを基にファイル名を変換するPGですが、 >アクセスを使ってできませんか? >受験番号、学籍番号というフィールドを使って、 >受験番号.jpgから学籍番号.jpgに一括変換。 >どうでしょうか? ------------------------------------------------------ あれ、、、忘れてました。 今の状態、まるで、知り合いに借りたお金を忘れるヤツ、、 で 貸したほうは当然おぼえていて、いつ返してくれるんだろう? チョットやだな状態、、、そんな感じかな。 いつものくだらない前置きはそれぐらいにしろ、、 と 心の声が聞こえたとこで、 VBA で Name ステートメント を使用して、変更してみようと思います。 構文は、ヘルプをそのまま引用すると(いいのかなぁ?) Name oldpathname As newpathname で、変更可能です。 例) Name "c:\aaa.jpg" As "c:\bbb.jpg" でファイル名変更可能 だが、変更元ファイルが無いと、実行時エラーが発生するので注意。 要望はAccessですが、Excel97のVBAでサンプル書きます。 *HP容量いっぱいで、サンプル置けないので、 ファイルでほしい人は、VBA Nameステートメントサンプル希望でメール下さい。 下記のようなシートの状態にします A列に古い名前(受験番号) B列に新しい名前(学籍番号)を保存して下さい。 A B 1 受験番号 学籍番号 2 d:\work\0001.jpg d:\work\2000-0001.jpg 3 d:\work\0002.jpg d:\work\2000-0002.jpg 4 d:\work\0003.jpg d:\work\2000-0003.jpg 5 d:\work\0004.jpg d:\work\2000-0004.jpg Sub TestMain() Dim nYLINE As Integer '行カウンタ Dim strOLDNAME As String '変更元ファイル名 Dim strNEWNAME As String '変更先ファイル名 nYLINE = 2 '見出しを飛ばして、2行目から処理 'A列のデータがある間、ループする While Len(Cells(nYLINE, 1)) <> 0 '値の代入 strOLDNAME = Cells(nYLINE, 1) 'A列 strNEWNAME = Cells(nYLINE, 2) 'B列 '変更元ファイルがあるときだけ処理する(したい) If Dir(strOLDNAME) <> "" Then Name strOLDNAME As strNEWNAME Else Cells(nYLINE, 3) = "ファイルが見つかりません" 'ナマイキにエラーをセット End If nYLINE = nYLINE + 1 '忘れずに、次の行へポイントを移動 Wend MsgBox "処理終了" End Sub また、雑な動けばイイヤ的プログラムですが、 何かの参考となれば、、幸いです。 逃げ出す前に、 フルバスd:\work\2000-004.jpgとディレクトリ付きはなんか芸が無いなあ、、 せめて、自分(xlsの位置)か、パス指定可能としないと、なんかなさけないなぁ。 Excel で下記のようにシートを作って小細工もできるけど、、 A B C D E 1 受験番号 学籍番号 2 ="c:\work\"&D2 ="c:\work\"&E2 0001.jpg 2000-0001.jpg みたいに、セルに計算式をいれてかわすなんてこともできます。 規則性がある変換の時、ワークシート関数を併用して、 VBA側は変えないなんてこともできるかも? A B 1 CSV TXT 2 c:\work\001.csv =LEFT(A2,LEN(A2)-3)&"txt" ←ワークシート関数で、、 なんて、余談が多すぎましたね、、、 また、これは蛇足だ、、私ならこう処理する、、 この切り口は? など、この例題処理?課題?のうまい調理法、思いついた人は、 掲示板に、気軽にご指摘・文句なんでも下さい。 なんで質問されたAccessでやらないで、、 ホントひねくれ者の三流PGだなぁ、、 と 声が聞こえてきたところで、このへんで、、 変り者の Ken3 でした。。。
質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。 時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。 |
←パソコンの技術系の書籍を探しているなら コンピュータ関連の出版社33社(アスキー、インプレス等)が共同運営するコンピュータの本・専門店 ※種類が豊富で探し易い※在庫ありが48時間以内発送 |