三流君のHP [TOP] [VBA系] [ASP系] [コンビニ系] [愚痴系]

VBA ファイル名の変更は、Nameステートメント

====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*=
[ 三流PG 番外編 今日の一品 No.023 ]   2000/04/13 木曜日  発送予定
=*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====
三流PG 番外編 今日の一品 は 隠し味として、
軽めのVBA関係のサブルーチンを載せていきたいと思います。
----------------------------------------------------------------------------

VBA Nameステートメント

久しぶりにスパムメールでイジメラレテイル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 でした。。。



質問や要望、クレームを送る(三流君に連絡する 連絡方法)

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

(感想や質問・要望・苦情はHPで記事に載せることがあります。)

急ぎで連絡がほしい、そんな時は:[三流君連絡先]に連絡してください。

番外編 愚痴系で書いてた今日の一品 (短いサブ関数など)

2000/05/13 SQL Count関数を使ってみる
2000/05/11 Access97 標準関数Midなどが使えない
2000/05/09 SendObjectのエンコード
2000/05/08 クエリーで〜以外とは
2000/04/27 Imagingコントロールを使ってみた
2000/04/25 Excel97 VBA イベントなど
2000/04/24 Access97で複数のプリンタを切替えて使用
2000/04/20 書式付きエクスポート DoCmd.OutputToで、できます
2000/04/19 Access97でExcel形式へExport時に書式設定を行いたい
2000/04/13 Access97でOutlook97/98とリンクする方法
2000/04/13 VBA Nameステートメント
2000/04/04 Accessでキー取得
2000/04/04 AccessでFile参照ダイアログ?
2000/04/03 縦書用数値変換改良
2000/04/01 Access Err テーブルを消したい
2000/03/31 縦書き数値、どうしてますか?
2000/03/29 VBA 手抜きで、処理後、explorerを開く
2000/03/28 Access --> Word へデータ
2000/03/24 名前一覧Excelの機能で、同じことできました
2000/03/23 Excel97 VBA セルに付けた名前一覧を作成する
2000/03/21 Excel セルに名前付け
2000/02/25 iniFileを読む GetPrivateProfileString
2000/02/15 Excel VBA Rangeオブジェクトとサンプル
2000/02/14 Access97 SizeMode/OLEサイズ で画像調整
2000/02/10 Access97 Pictureプロパティとサンプル
2000/02/09 Access97 集計クエリーで重複値をハジク
2000/02/07 Access97 サブフォームへ値をセット
2000/02/04 Access97 コントロールソース、チョットした使用法
2000/02/01 Access97 フォームフッター
2000/01/18 Access97 now()関数で有効期限処理、、、

←パソコンの技術系の書籍を探しているなら コンピュータ関連の出版社33社(アスキー、インプレス等)が共同運営するコンピュータの本・専門店 種類が豊富で探し易い※在庫ありが48時間以内発送


[三流君(TOP)]へ戻る。