====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*= [ 三流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時間以内発送 |