フォルダAに入っているPDFをフォルダBにコピーしたいです。
その際セルに入っている文字列をファイル名に使います。(セルは固定)
また、コピー先に同名のファイルがあったら連番にしたいです。
Sub PDFリネーム()
Dim InputPDF, OutputPDF_full, OutputPDF_path, OutputPDF_name As Variant
Dim Version As Long
CreateObject("Wscript.shell").currentdirectory = "C:\Users\ユーザー名\Downloads\"
InputPDF = Application.GetOpenFilename("PDFファイル,*.pdf", , "ファイルを選択")
If InputPDF = False Then
Exit Sub
End If
OutputPDF_path = "C:\Users\ユーザー名\Desktop\"
OutputPDF_name = Range("A2").Value & "_" & Range("B2").Value
OutputPDF_full = OutputPDF_path & OutputPDF_name & ".pdf"
If Dir(OutputPDF_full) <> "" Then
Version = 2
OutputPDF_name = OutputPDF_name & "_ver" & Version
OutputPDF_full = OutputPDF_path & OutputPDF_name & ".pdf"
Version = Version + 1
End If
FileCopy InputPDF, OutputPDF_full
End Sub
これだとVer2までは作れますが、Ver2もある場合のVer3、4・・・が作れません。
どうしたらよいでしょうか。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
ユーザー名の所は、正しいかどうかは分かりません、マニュアルで入れても構いません。
以下は、拡張子を変えれば、何にでも使えます。
変数名は、こちらで使うものに替えました。
'//
Sub Copy_changeName()
Dim fName As Variant
Dim oBaseName As String
Dim BaseName As String
Dim ofName As String
Const EXT As String = ".pdf"
Dim j As Long
Dim myID As String: myID = Environ("UserName")
Dim myDLPoint As String: myDLPoint = "C:\Users\" & myID & "\Downloads\"
Dim dstPath As String: dstPath = "C:\Users\" & myID & "\Desktop\"
Dim cPath As String: cPath = CurDir
oBaseName = Range("A2").Value & "_" & Range("B2").Value
If oBaseName Like "*_" Then
MsgBox "正しくファイル名が入っていません", vbCritical
Exit Sub
End If
ChDir myDLPoint
fName = Application.GetOpenFilename("PDFファイル,*.pdf", , "ファイルを選択")
If fName = False Then
GoTo Endline
End If
''枝番付け
BaseName = oBaseName
Do While Dir(dstPath & BaseName & EXT) <> ""
j = j + 1
BaseName = oBaseName & "_ver" & CStr(j)
Loop
FileCopy fName, dstPath & BaseName & EXT
Endline:
ChDir cPath
End Sub
'//
No.2
- 回答日時:
作り変えました。
以下のようにしてください。-----------------------------------------
Sub PDFリネーム()
Dim InputPDF, OutputPDF_full, OutputPDF_path, OutputPDF_name As Variant
CreateObject("Wscript.shell").currentdirectory = "C:\Users\ユーザー名\Downloads\"
InputPDF = Application.GetOpenFilename("PDFファイル,*.pdf", , "ファイルを選択")
If InputPDF = False Then
Exit Sub
End If
OutputPDF_path = "C:\Users\ユーザー名\Desktop\"
OutputPDF_name = Range("A2").Value & "_" & Range("B2").Value
OutputPDF_full = Get_PDF_full(OutputPDF_path, OutputPDF_name)
FileCopy InputPDF, OutputPDF_full
End Sub
Private Function Get_PDF_full(ByVal OutputPDF_path As String, ByVal OutputPDF_name As String) As String
Dim version As Long
Get_PDF_full = OutputPDF_path & OutputPDF_name & ".pdf"
If Dir(Get_PDF_full) = "" Then Exit Function
version = 1
Do
version = version + 1
Get_PDF_full = OutputPDF_path & OutputPDF_name & "_ver" & version & ".pdf"
Loop While Dir(Get_PDF_full) <> ""
End Function
No.1
- 回答日時:
それは
Version = 2
と固定しているからでしょ?
InputPDFから判別する様にするだけですけど
数字が最後につくファイル名があり得ないのか
等、考慮すべきことはあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
サブフォルダー内のPDFファイルを別フォルダにコピーするVBA
Excel(エクセル)
-
フォルダ内のPDFファイル名を変更するマクロ
Excel(エクセル)
-
ExcelVBAでPDFを閉じるソース
その他(Microsoft Office)
-
-
4
pdfファイル名の一括リネームの仕方
Excel(エクセル)
-
5
PDFファイルをコピーしてエクセルブックにはりつけるVBA
Excel(エクセル)
-
6
PDFのファイル名をリネームをしたい(若干複雑かもしれません)
Excel(エクセル)
-
7
マクロ、PDFを任意のフォルダへ保存
Excel(エクセル)
-
8
Access VBA を利用して、フォルダ内のファイルの名称を変更したい
Access(アクセス)
-
9
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
10
エクセルでエラーが出て困っています。
Excel(エクセル)
-
11
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
12
Excel マクロによる特定pdfファイルをRenameして複写する方法
PDF
-
13
【Excel】指定したセルの名前でPDFを保存する【VBA】
Visual Basic(VBA)
-
14
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
15
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
16
FSO.CopyFileでのエラー無視方法
その他(Microsoft Office)
-
17
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
18
大量のPDFファイル 名前変更フリーソフトは
フリーソフト
-
19
VBA PDFファイル印刷後のAcrobatReaderDCの起動画面を閉じたい
Excel(エクセル)
-
20
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
ACCESS テキストボックスを隙...
-
コンボボックスのtag情報の取得...
-
[python] 文字列を変数名として...
-
FindFirst を複数条件で検索
-
MSXMLでの属性の存在確認法
-
構造体の変数の値を、動的に取...
-
構造体の各データの表示につい...
-
「*:*」って何を意味するのでし...
-
VBA他のブックから値のみ貼付す...
-
formで特定のinputを送信しない...
-
文字の横にプルダウンを表示さ...
-
JSONで文字列が長い時
-
どちのほうがすきですか?
-
int(input("○○"))の使い方
-
プルダウンで別項目に値を代入...
-
C言語のflagの使い方が分かりま...
-
16進の10進変換について
-
[html]ラジオボタンを使った診...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
FindFirst を複数条件で検索
-
「*:*」って何を意味するのでし...
-
ACCESS テキストボックスを隙...
-
パイソンプログラミング
-
VBAでPDFのコピーとリネームを...
-
パイソンのクラスのブログラム
-
【メモリ不足で落ちる(python)】
-
[python] 文字列を変数名として...
-
パイソンのクラスについて
-
vscode 文字化け
-
PythonのExperimentに関する質...
-
vbaでxmlからNodeListでデータ...
-
phpでボタンを押したときに変数...
-
UWSC:ポップアップウインドウ...
-
VBA他のブックから値のみ貼付す...
-
構造体の各データの表示につい...
-
コンボボックスのtag情報の取得...
-
VBAで特殊文字を出力したい
おすすめ情報