過去ログ

                                Page     890
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼JPEGファイルの名前の変更  chihiro 03/3/17(月) 18:00
   ┣Re:JPEGファイルの名前の変更  てと 03/3/17(月) 18:48
   ┣Re:JPEGファイルの名前の変更  てと 03/3/17(月) 19:12
   ┗VBSで  こう 03/3/17(月) 20:22
      ┗できました p-o-q  chihiro 03/3/18(火) 10:53
         ┗おせっかい  こう 03/3/18(火) 12:28

 ───────────────────────────────────────
 ■題名 : JPEGファイルの名前の変更
 ■名前 : chihiro
 ■日付 : 03/3/17(月) 18:00
 -------------------------------------------------------------------------
   はじめまして
いい案があれば教えて欲しいのですが

JPEGファイルが1000個あります
名前がバラバラなので 連番の名前を付けたいのです
VBAを使用して JPEGファイルの名前の変更はできるでしょうか?

お願いします
 ───────────────────────────────────────  ■題名 : Re:JPEGファイルの名前の変更  ■名前 : てと  ■日付 : 03/3/17(月) 18:48  -------------------------------------------------------------------------
   ▼chihiro さん:
>はじめまして
>いい案があれば教えて欲しいのですが
>
>JPEGファイルが1000個あります
>名前がバラバラなので 連番の名前を付けたいのです
>VBAを使用して JPEGファイルの名前の変更はできるでしょうか?
>
>お願いします

VBAのHELP(OfficeXPです)に以下の記述がありますので、確認してみてください。

Name ステートメントの使用例
次の例は、Name ステートメントを使って、ファイルの名前を変更します。この例では、指定するフォルダは既に存在するものと仮定します。Macintosh の場合、既定のドライブ名は “HD:” で、パスの区切り文字には円記号 ("\") ではなく、コロン (":") を使用してフォルダを指定します。

Dim OldName, NewName
OldName = "OLDFILE": NewName = "NEWFILE"  ' ファイル名を定義します。
Name OldName As NewName        ' ファイル名を変更します。

OldName = "C:\MYDIR\OLDFILE": NewName = "C:\YOURDIR\NEWFILE"
Name OldName As NewName        ' ファイルの移動と名前の変更を行います。
 ───────────────────────────────────────  ■題名 : Re:JPEGファイルの名前の変更  ■名前 : てと  ■日付 : 03/3/17(月) 19:12  -------------------------------------------------------------------------
   ▼chihiro さん:
>はじめまして
>いい案があれば教えて欲しいのですが
>
>JPEGファイルが1000個あります
>名前がバラバラなので 連番の名前を付けたいのです
>VBAを使用して JPEGファイルの名前の変更はできるでしょうか?
>
>お願いします

先ほどの続きです。
1000個のファイル名をExcelのシート上に一覧表のようにして取り込んでおきます。
この時、ファイルのパス名も一緒に取得します。

以下のプログラムを実行して見てください。
ファイルを開くダイアログボックスが表示されたら、JPEGファイルが保存してあるフォルダを開いて、1つだけJPEGファイルを選択して「開く」ボタンをクリックします。
一覧表が作成されます。

Sub 一覧表作成()
Call FileNameList(fncGetFilePath)
End Sub

Sub FileNameList(PathName)
Set fs = Application.FileSearch
With fs
  .LookIn = PathName
  .FileName = "*.jpg"
  If .Execute > 0 Then
    MsgBox .FoundFiles.Count & " 個のファイルが見つかりました。"
    For i = 1 To .FoundFiles.Count
      Range("A1").Offset(i, 0) = .FoundFiles(i)
    Next i
  Else
    MsgBox "ファイルは見つかりませんでした。"
  End If
End With
End Sub

Function fncGetFilePath() As String
  Dim lngCount As Long
  ' ファイル ダイアログを開きます。
  With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = True
    .Show
    ' 選択された各ファイルのパスを表示します。
    For lngCount = 1 To .SelectedItems.Count
      fncGetFilePath = fncCutFileName(.SelectedItems(lngCount))
    Next lngCount
  End With
End Function

Public Function fncGetFileName(PathName As String) As String
  Dim i As Integer
  For i = Len(PathName) To 1 Step -1
    If Mid(PathName, i, 1) = "\" Then
      Exit For
    End If
  Next i
  If i = 1 Then
    fncGetFileName = ""
  Else
    fncGetFileName = Right(PathName, Len(PathName) - i)
  End If
End Function

次は、A列をB列にコピーします。
B列のファイル名部分を連番のファイル名に変更します。
最後に先ほどのHELPの説明のとおりNAMEステートメントを実行するようなロジックを実行すれば出来上がりです。
 ───────────────────────────────────────  ■題名 : VBSで  ■名前 : こう <kou__@anet.ne.jp>  ■日付 : 03/3/17(月) 20:22  -------------------------------------------------------------------------
   ▼chihiroさん、てとさん こんにちわ。

>JPEGファイルが1000個あります
>名前がバラバラなので 連番の名前を付けたいのです
>VBAを使用して JPEGファイルの名前の変更はできるでしょうか?

VBScriptですが...

以下のコードを「ファイル名:test01.vbs」で保存してください。

Set objFS = WScript.CreateObject("Scripting.FileSystemObject")
Set f = objFS.GetFolder(".")
j=0
For Each fff In f.Files
  j = j + 1
  '新ファイル名:「FILE+0001.jpg」
  NewName = "FILE" & Right( String(4, "0") & j,4) & ".jpg"
  '[暫定]自分自身は移動しない
  if fff.name <> "test01.vbs" then
    'WScript.Echo(fff.name & "→" & NewName)
    objFS.GetFile(fff.name).move(NewName)
  end if
Next

でもって,jpgファイルが格納されたフォルダに保存し,test01.vbsを
実行(ダブルクリック)してください。
フォルダ内の全ファイル名が「FILE+4桁連番.jpg」に変更されます。

いろいろ未実装の機能がありますが、まずはここまで。
 ───────────────────────────────────────  ■題名 : できました p-o-q  ■名前 : chihiro  ■日付 : 03/3/18(火) 10:53  -------------------------------------------------------------------------
   てとさん こうさん おはようございます

てとさんのサンプルプログラムをヒントに作成しました
デスクトップの「画像」フォルダに画像が入っているとして

Sub test()
  Dim i As Integer, strFilePath1 As String, strFilePath2 As String
  strFilePath1 = "C:\WINDOWS\デスクトップ\画像"
  With Application.FileSearch
   .LookIn = strFilePath1
   .FileName = "*.jpg"
   .Execute
   For i = 1 To .FoundFiles.Count
     strFilePath2 = .FoundFiles(i)
     If i < 10 Then
      Name strFilePath2 As strFilePath1 & "\000" & i & ".jpg"
     ElseIf i < 100 Then
      Name strFilePath2 As strFilePath1 & "\00" & i & ".jpg"
     ElseIf i < 1000 Then
      Name strFilePath2 As strFilePath1 & "\0" & i & ".jpg"
     Else
      Name strFilePath2 As strFilePath1 & "\" & i & ".jpg"
     End If
   Next i
  End With
End Sub

てな 感じで動きました

どうも ありがとうございました
 ───────────────────────────────────────  ■題名 : おせっかい  ■名前 : こう <kou__@anet.ne.jp>  ■日付 : 03/3/18(火) 12:28  -------------------------------------------------------------------------
   chihiro さん、こんにちわ。

採用されなかったんですね...(号泣)
というのは冗談ですが、ファイル名称の設定はもっとシンプルにできます。

>Sub test()
>  Dim i As Integer, strFilePath1 As String, strFilePath2 As String
>  strFilePath1 = "C:\WINDOWS\デスクトップ\画像"
>  With Application.FileSearch
>   .LookIn = strFilePath1
>   .FileName = "*.jpg"
>   .Execute
>   For i = 1 To .FoundFiles.Count
>     strFilePath2 = .FoundFiles(i)
     Name strFilePath2 As strFilePath1 & "\" & Format(i, "0000") & ".jpg"
>   Next i
>  End With
>End Sub
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 890