プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります

1000.pdf から3000.pdf というファイルがあり、これを同じ名前を用いてフォルダを作成して、その作成されたフォルダにpdfファイルを保存させたいです。

※やりたいこと
1000.pdfファイルは1000フォルダを新しく作成して1000フォルダの中に保存
1001.pdfファイルは1001フォルダを新しく作成して1001フォルダの中に保存

ってな具合です。

どなたかご教示頂けないでしょうか? よろしくお願いいたします。

質問者からの補足コメント

  • 動作確認したところ、特に問題なかったです。
    この作って頂いたコードを元に仕様に合わせたところオッケーでした。
    本当にありがとうございました。

    No.4の回答に寄せられた補足コメントです。 補足日時:2019/08/11 13:44

A 回答 (4件)

私も過去に同じようなことをしたことがあります。


私の場合はPDFではなくJPGファイルですが、その時は、VBAではなく、コマンドプロンプトから「DIR /B > ファイル.txt」としてテキストファイルに保存してから、Excelで開いて、計算式を駆使してバッチファイルを作りました。
その方が簡単で早いと思いますが、ExcelVBAの勉強も兼ねて、やっつけ仕事で次のようなものを作ってみました。
Excelファイルと同じフォルダーにあるPDFファイルを、同名のフォルダーを作って保存し、ワークシート「Sheet1」に処理結果を表示します。
動作は全然保証できませんので、あらかじめバックアップをお願いします。



Sub PDFファイルを同名のフォルダーに保存()

Dim パス名 As String

Dim FSO As Object
Dim WSH As Object
Dim ファイル As Object
Dim 移動先フォルダー As String
Dim 移動先パス As String
Dim 行 As Long

Application.Cursor = xlWait

On Error Resume Next

'ファイルシステムオブジェクト
Set FSO = CreateObject("Scripting.FileSystemObject")

'Sheet1をクリアする
Worksheets("Sheet1").Cells.ClearContents

'1行目
Worksheets("Sheet1").Cells(1, 1) = "移動前のファイル"
Worksheets("Sheet1").Cells(1, 2) = "⇒"
Worksheets("Sheet1").Cells(1, 3) = "移動後のファイル"

行 = 2

' フォルダー内のファイル
For Each ファイル In FSO.GetFolder(ThisWorkbook.Path).Files

With ファイル

If StrConv(FSO.GetExtensionName(.Path), vbUpperCase) = "PDF" Then

Worksheets("Sheet1").Cells(行, 1) = "'" & FSO.GetAbsolutePathName(.Path)

'フォルダが存在しない場合、フォルダーを作成する
移動先フォルダー = .ParentFolder & "\" & FSO.GetbaseName(.Path)
If Not FSO.FolderExists(移動先フォルダー) Then

FSO.CreateFolder 移動先フォルダー

End If

'既にファイルが存在する場合、削除する
移動先パス = 移動先フォルダー & "\" & .Name
If FSO.FileExists(移動先パス) Then

FSO.DeleteFile 移動先パス, True

End If

'ファイルを移動する
FSO.MoveFile FSO.GetAbsolutePathName(.Path), 移動先フォルダー & "\"

Worksheets("Sheet1").Cells(行, 2) = "⇒"
Worksheets("Sheet1").Cells(行, 3) = 移動先パス

行 = 行 + 1


End If

End With

Next

Set FSO = Nothing
Application.Cursor = xlDefault


End Sub
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。半ば 諦めていました。
動作確認して再度連絡します。

お礼日時:2019/08/09 09:10

homeのtestというフォルダの中に該当のpdfがあったらの話です

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
できましたら、VBAのコードもご教示いただけますでしょうか?
勝手言ってすみません。

お礼日時:2019/08/06 05:08

シェルスクリプトですけどいいですか?



#!/bin/bash
for ((i=1000; i<=3000; i++)); do
mkdir ~/test/$i
mv ~/test/$i.pdf ~/test/$i/$i.pdf
done
    • good
    • 0

ホルダー名とファイル名は一緒でもいいよ。


何の目的でやるのかわからないけど。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!