Excelのマクロについて教えてください。
PDFファイル名をマクロを実行してセル値をファイル名に変更できますが、
変更するファイルがある場所を指定するダイナログが開きますが、
そのダイナログの先を変更出来る方法を詳しいコードで教えてください。
現状ではダイナログを開くと違うフォルダを指定しておりますので、
マクロが設定しているExcelファイルとファイル名を変更したいファイルは同じフォルダ内にありますので、このフォルダを指定する方法を教えてください。「ThisWorkbook.Path」
マクロ
Sub 交付用名前変更()
Dim TargetFile As String
Dim fPath As String, fName As String
Dim newfName As String
newfName = ThisWorkbook.Sheets("青紙表").Range("CH2").Value & ".pdf"
newfName = NGNarrowToWide(newfName)
TargetFile = Application.GetOpenFilename("PDFファイル ,*.pdf")
If TargetFile = "False" Then Exit Sub
fPath = Left(TargetFile, InStrRev(TargetFile, "\") - 1)
' ファイル名を変更
If TargetFile = fPath & "\" & newfName Then MsgBox "同名ファイルを選択しています": Exit Sub
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
です。
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
質問にあるコードを書いたので、横からですみません
その質問には
>マクロが設定しているExcelファイルと
ファイル名を変更したいファイルは同じフォルダ内にあります
と言う要件がありませんでしたので
簡単なApplication.GetOpenFilename("PDFファイル ,*.pdf")を採用しました
おそらくその要件があったなら、#1様ご回答の方法になりますね
ご質問者様にはアドバイスやヒントは意味が無いと解釈していますので
ソースコードです
TargetFile = Application.GetOpenFilename("PDFファイル ,*.pdf")
If TargetFile = "False" Then Exit Sub
2行削除
代わりにDialog初期フォルダを設定できるFileDialog(msoFileDialogFilePicker)を使います
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "PDFファイル(.pdf)", "*.pdf"
.InitialFileName = ThisWorkbook.Path
If .Show Then
TargetFile = .SelectedItems(1)
Else
Exit Sub
End If
End With
No.3
- 回答日時:
>試験は出来ないとの事ですが、
>コードを教えてはいただけませんでしょうか。
newfName = NGNarrowToWide(newfName)の
次へ、以下の3行を追加します。
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
wsh.CurrentDirectory = ThisWorkbook.Path
結果的に以下のようになります。
ーーーーーーーーーーーーーーーー
・・・省略・・・
newfName = NGNarrowToWide(newfName)
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
wsh.CurrentDirectory = ThisWorkbook.Pat
TargetFile = Application.GetOpenFilename("PDFファイル ,*.pdf")
・・・省略・・・
こちらで、動作確認は行っておりません。
https://vba-labo.rs-techdev.com/archives/1259
の記事を参考にしています。
No.2
- 回答日時:
>マクロが設定しているExcelファイルとファイル名を変更したいファイルは同じフォルダ内にあります
このマクロのあるファイルを格納しているフォルダは、
ネットワーク上のフォルダですか、
それともローカルなPC上のフォルダでしょうか。
それによって、対応する処理がことなります。
尚、「ネットワーク上のフォルダである」という返信をいただいた場合、
私のPCの環境が「ネットワーク上のフォルダ」を持っていない為、
試験することができません。
「ローカルなPC上のフォルダである」という返信をいただいた場合に限り、
修正したマクロを提供可能です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Access(アクセス) エクセルのマクロについて教えてください。 2 2023/02/03 16:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 13:29
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの特定行の削除
-
ファイルが移動してもリンクの...
-
OneDrive必要なものでしょうか
-
[Unity]シーンファイルの中が消...
-
EXCELVBAにて文字列にして「01...
-
HTMLのファイル移動について
-
WINDOWS CMDからゴミ箱のファ...
-
VBAにおいて、ファイルの移...
-
Excel: ファイル名になぜ、[...
-
FTPのgetとputの使いわけ。
-
iCloud for Windowsをアンイン...
-
vbsからのExcelマクロ呼び出し...
-
5000個のtiffファイルをpdfへ変...
-
彼女の過去の恋愛に嫉妬してし...
-
HTMLのリンクで、EXCELをIEでは...
-
WinPCのメモ帳を、アンドロ...
-
エクセル保存終了で一時ファイ...
-
ユーザーフォームをコピーする...
-
秀丸エディタでHTMLの部分のURL...
-
CSVファイルの暗号化
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
iCloud for Windowsをアンイン...
-
vbsからのExcelマクロ呼び出し...
-
CSVファイルの特定行の削除
-
EXCELVBAにて文字列にして「01...
-
OneDrive必要なものでしょうか
-
Excel: ファイル名になぜ、[...
-
ファイルが移動してもリンクの...
-
複数のExcelファイルにある同名...
-
VBAにおいて、ファイルの移...
-
彼女の過去の恋愛に嫉妬してし...
-
Googleドライブについて
-
WINDOWS CMDからゴミ箱のファ...
-
[Unity]シーンファイルの中が消...
-
エクセルの拡張子XLSのファイル...
-
batでファイル名を変更したい(...
-
Excelに貼り付けた画像を圧縮す...
-
エクセルのファイル:「自分」が...
-
5000個のtiffファイルをpdfへ変...
-
VBA ファイル一覧を取得して全...
-
HTMLのリンクで、EXCELをIEでは...
おすすめ情報
大変困っております。
このコードを教えて頂けた方、どうぞ、お助けください。
よろしくお願いいたします。
回答ありがとうございます。
残念ながら、ネットワーク上のフォルダになっております。
試験は出来ないとの事ですが、
コードを教えてはいただけませんでしょうか。
よろしくお願いします。