【選手権お題その2】この漫画の2コマ目を考えてください

下記マクロを実行すると
ダイアログが開き、マウスで指定したPDFファイルを指定シートの指定セル値に設定しているファイル名に変更できます。
このマクロを下記の様に変更できる方法を教えてください。
マクロ設定ブックと同じフォルダ内に
PDFファイル名が「A4」「A3」(固定のファイル名)となっているファイルがあります、
ダイアログを開かずに
PDFファイル名が「A4」のファイル名をシート「昇降機質疑」セル値「V3」に設定しているファイル名に変更
PDFファイル名が「A3」のファイル名をシート「昇降機質疑」セル値「V9」に設定しているファイル名に変更
できる方法を親切にコード迄教えてください。
現状のマクロ
Sub 交付用名前変更A4()
Dim TargetFile As String
Dim fPath As String, fname As String
Dim newfName As String

newfName = ThisWorkbook.Sheets("昇降機質疑").Range("V3").Value & ".pdf"
newfName = NGNarrowToWide(newfName)

''メッセージを表示し、実施確認する。
If MsgBox(newfName & vbCrLf & vbCrLf & "(交付用_A4)を作成しますか。", vbExclamation + vbOKCancel) <> vbOK Then Exit Sub

' ファイルのパスを指定
fPath = ThisWorkbook.Path

' ダイアログを表示してファイルを選択
TargetFile = Application.GetOpenFilename("PDFファイル ,*.pdf", , "ファイルを選択", , False)

If TargetFile = "False" Then Exit Sub

' ファイル名を変更
If TargetFile = fPath & "\" & newfName Then
MsgBox "同名ファイルを選択しています"
Exit Sub
End If

If Not Dir(fPath & "\" & newfName) <> "" Then
Name TargetFile As fPath & "\" & newfName
Else
Dim rc As Integer
rc = MsgBox("既に存在する名前です" & vbCrLf & "はいを押すと既存ファイルは削除され" & vbCrLf & "リネームファイルに置き換えられます", 52, "置き換え確認")
If rc = vbYes Then
Application.DisplayAlerts = False
Kill fPath & "\" & newfName
Name TargetFile As fPath & "\" & newfName
Application.DisplayAlerts = True
Else
MsgBox "処理を中止しました"
End If
End If
End Sub
Public Function NGNarrowToWide(ByVal stg As String) As String
stg = Replace(Replace(Replace(Replace(stg, "\", "¥"), "/", "/"), ":", ":"), "*", "*")
stg = Replace(Replace(Replace(Replace(stg, "?", "?"), "<", "<"), ">", ">"), "|", "|")
stg = Replace(stg, """", Chr(&H8168))
NGNarrowToWide = stg
End Function
以上となります。
宜しくお願い致します。

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

  • 回答ありがとうございます。
    色々と使用不明で申し訳ありません。
    仕様不明点です。
    1.A3,A4,V9のファイル名は、拡張子(.pdf)を除いて指定されるのでしょうか。それとも、含めて指定されるのでしょうか。
    A:「A4.pdf」「A3.pdf」を拡張子を含めて指定してください。
    又、「A4.pdf」→V3の設定文字で例えば「北海太郎(A4交付用).pdf
    「A3.pdf」→V9の設定文字で例えば「北海太郎(A3交付用).pdf
    のようにお願いします。
    2.A3,A4,V3,V9のファイル名の何れかが指定されない場合(空白の場合)は、エラーにするのでしょうか。
    A:エラーメッセージ「該当ファイルがありません」等を表示して欲しいです。

    No.3の回答に寄せられた補足コメントです。 補足日時:2024/11/14 12:59
  • 3.確認メッセージはどのようにしますか。
    ③その他
    A:「A4・A3の交付用を作成しますか?」で
    YESの場合に実行
    キャンセルの場合に非実行でお願いいたします。
    何度も申し訳ありません。
    宜しくお願い致します。

    No.2の回答に寄せられた補足コメントです。 補足日時:2024/11/14 13:00
  • ご連絡ありがとうございます。
    はい、おっしゃる通りです。
    お手数をお掛け致しますが、何卒、宜しくお願い致します。

    No.4の回答に寄せられた補足コメントです。 補足日時:2024/11/14 15:09

A 回答 (5件)

No4です。


下記URLにアップしました。
https://ideone.com/aWGPIv
    • good
    • 0
この回答へのお礼

この度も助けて頂きましてありがとうございました。
ご連絡が遅くなり申し訳ありません。
全て上手く行きました。
感謝・感謝です。

お礼日時:2024/11/15 08:40

補足ありがとうございました。


念のため確認ですが、
>「A4.pdf」→V3の設定文字で例えば「北海太郎(A4交付用).pdf
>「A3.pdf」→V9の設定文字で例えば「北海太郎(A3交付用).pdf
>のようにお願いします。

この意味は、
A4のセルは拡張子を含めて指定される。例として「北海太郎(A4交付用).pdf」
A3のセルは拡張子を含めて指定される。例として「北海太郎(A3交付用).pdf」
と理解しましたが、間違いないでしょうか。

又、V3,V9は拡張子を含めないで指定されるという理解で間違いないでしょうか。
この回答への補足あり
    • good
    • 0

No2です。

追加の不明点です。
3.確認メッセージはどのようにしますか。
①表示しない。
②A4→V3、A3→V9を表示して、キャンセルなら実行しない。
③その他

等が考えられます。
③の場合は、具体的な内容を提示してください。
この回答への補足あり
    • good
    • 0

仕様不明点です。


1.A3,A4,V9のファイル名は、拡張子(.pdf)を除いて指定されるのでしょうか。それとも、含めて指定されるのでしょうか。
(V3については、ソースコードをみると、拡張子を指定しないことが判明しています。)
2.A3,A4,V3,V9のファイル名の何れかが指定されない場合(空白の場合)は、エラーにするのでしょうか。
この回答への補足あり
    • good
    • 0

> ダイアログを開かずに



まず、何をトリガーにそのマクロを動作させるかを決めましょう。

でようは特定のフォルダーにある特定の(名前の)ファイルのファイル名を、Excelの特定のシート、特定のセルにセットされた値に変更したい・・・ってことですよね?
であれば知る必要があるのはVBAでのファイル名の変更の仕方でしょう。
それはGoogleなどで「VBA ファイル名 変更」といった簡単なキーワードで検索すれば該当機能をExcelマクロで実現する方法を解説したWebページがたくさんヒットするかと思います。
で、Name関数イッパツなのでは?

参考まで。
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A