
マクロを実行するとエラーが出て、実行できません。
解決方法を教えてください。
マクロ
Sub 江別市()
Const copy_source As String = "\\nas-sp01\share\確認部\■共通\審査の注意点\条例・細則【確認申請添付】\■江別市*.pdf"
Const copy_fileName As String = "\■江別市*.pdf_Copy.pdf"
FileCopy copy_source, ThisWorkbook.Path & copy_fileName
End Sub
があります。
このマクロは指定フォルダ内の指定ファイル「pdfファイル」を作業フォルダ内にコピーできるマクロですが、
画像のようなエラーメッセージが出てしまい。
マクロが実行できません。
尚、「■江別市*.pdf」の「*」は「■江別市」の後ろのファイル名が都度変更になるために「*」としております。
よろしくお願いします。
希望としましては
指定フォルダ内「 "\\nas-sp01\share\確認部\■共通\審査の注意点\条例・細則【確認申請添付】」
の指定PDFファイル「■江別市○○.pdf」を作業フォルダ内にコピーをしたいです。
尚、上記でも触れましたが、ファイル名の○○は都度変更になりますので、○○の前のファイル名で判断したいです。
よろしくお願いします。

No.4ベストアンサー
- 回答日時:
>「■江別市-5.27_Copy」となるように「"\Copy_"」部分を変更した
変数strSourceにDir関数で代入された ■江別市-5.27.pdf から
ファイル名を取得する必要があります(文字列)
方法はいくつか思い付きますが、今回ファイル名内に .が使われているので
文字列の右側から.を探し 文字列操作を行います
得られた結果に _Copy.pdf をつなげてパス &ファイル名+拡張子にして
FileCopy式を作ります
FileCopy copy_path & strSource, ThisWorkbook.Path & "\Copy_" & strSource
一行を
FileCopy copy_path & strSource, _
ThisWorkbook.Path & "\" & Mid(strSource, 1, InStrRev(strSource, ".") - 1) & "_Copy.pdf"
目的拡張子が明確なので拡張子の取得を割愛して.pdf明示しました
strSource = Dir(copy_path & "■江別市*")
などとファイル拡張子を明示しない場合は
FileCopy copy_path & strSource, _
ThisWorkbook.Path & "\" _
& Mid(strSource, 1, InStrRev(strSource, ".") - 1) & _
"_Copy" & Mid(strSource, InStrRev(strSource, "."))
でコピー元と同じ拡張子でコピー出来ます
あるか分かりませんが 後のメンテナンスなどを踏まえ
変数名はイメージしやすいものに変更(右辺と左辺を分けるなど)するのが良いです
以下は時間のある時などに調べてみてください
FileSystemObjectを使用すると
FileのCopyステートメントやCopyFileメソッドが使えワイルドカード*の設定が可能(最終要素のみなど制約有)となる為、分かり易い書き方になると思います
GetFileメソッドでファイルを取得する事できGetBaseNameメソッドで容易にファイル名を取得する事も出来ます
No.2
- 回答日時:
ちなみに複数 ■江別市*.pdf ファイルは無いのかな?
無ければ取得ファイル名を変数に代入して使えば 定数式が成立すると思います
例えば
Sub 江別市()
Const copy_path As String = "\\nas-sp01\share\確認部\■共通\審査の注意点\条例・細則【確認申請添付】\"
Dim strSource As String
strSource = Dir(copy_path & "■江別市*.pdf")
FileCopy copy_path & strSource, ThisWorkbook.Path & "\Copy_" & strSource
End Sub
まあ *部分を変数に入れるなら
Dim tmp As String, unkwWord As String
tmp = Mid(strSource, InStr(strSource, "市") + 1)
unkwWord = Left(tmp, InStr(tmp, ".") - 1)
unkwWord が *部分の文字列
No.1
- 回答日時:
あれ?
FileCopyステートメントはワイルドカード*などの使用は出来ませんので
実行出来ません(定数を明示する必要があります)
ワイルドカードを使用してFileCopyのような処理を行う場合は
FileSystemObjectの CopyFileメソッドを使います
ワイルドカード使用時の挙動については調べて要件に合うものかを確認してください
FileCopyここを書き直す
FSO.CopyFile copy_source, copy_fileName
参考サイト貼っておきます
http://officetanaka.net/excel/vba/filesystemobje …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) エクセルのマクロについて教えてください。 2 2023/02/03 16:07
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 12:54
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 09:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/02 11:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excelのセル値に基づいて図形の...
-
ワードのマクロについて教えて...
-
エクセルでのオブジェクト選択...
-
マクロの連続印刷が突然不可能...
-
メッセージボックスのOKボタ...
-
Gmail、Outlookで送信相手の表...
-
ExcelのVBA。public変数の値が...
-
wordを起動した際に特定のペー...
-
エクセルのマクロ(range)につ...
-
エクセルVBA イベントプロシー...
-
特定のPCだけ動作しないVBAマク...
-
C#言語でACCESSのソースを取得...
-
Excel_マクロ_現在開いているシ...
-
VBAでカタカナ→ローマ字の変換...
-
UWLSの記録でマクロを作成し使...
-
EXCELのマクロの重複起動...
-
エクセルマクロでグラフのタイ...
-
Excel マクロ VBA プロシー...
-
#define __T(x) L ## x について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
Excel_マクロ_現在開いているシ...
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
ExcelのVBA。public変数の値が...
-
エクセルで別のセルにあるふり...
-
エクセルに張り付けた写真のフ...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
Excelのセル値に基づいて図形の...
-
Excel VBAからAccessマクロを実...
-
ExcelVBAでPDFを閉じるソース
-
マクロ実行時、ユーザーフォー...
-
オートフィルターとExcelマクロ...
-
wordを起動した際に特定のペー...
-
特定文字のある行の前に空白行...
-
エクセルで縦に並んだデータを...
おすすめ情報
回答ありがとうございます
只今 パソコンから離れてまして
確認来週の月曜日になります
何時もありがとうございます♪
またご連絡させて頂きます
おはよう御座います。
昨日教えて頂きました、コードを自宅で試して見ました。
コード
Sub 江別市()
Const copy_path As String = "\\Users\〇〇\Desktop\5月27日\限定特例\特定行政庁\"
Dim strSource As String
strSource = Dir(copy_path & "■江別市*.pdf")
FileCopy copy_path & strSource, ThisWorkbook.Path & "\Copy_" & strSource
End Sub
指定フォルダ先が変更してます、又、個人情報になりますので、「〇〇」としております。
コピー先の「■江別市〇〇.pdfは」フォルダには一つしかありません。
上記のマクロを実行すると
ファイル名又は番号が不正です、となり
コードの
ご連絡ありがとう御座います。
はい、試しに自宅のパソコンにフォルダを作成しました。
「C:\Users\○○\Desktop\5月27日\限定特例\特定行政庁」
です。
又々私の設定に問題がありました。
申し分け有りません
C:\Users\〇〇\Desktop\5月27日\限定特例\特定行政庁
をきちんと設定すると
上手くコピーが出来ました。
いつも飲み込みが悪く、申し分け有りません。
もう少し教えて頂けますか。
コピーしたファイル名が「Copy_■江別市-5.27」となってますが
「■江別市-5.27_Copy」となるように
「"\Copy_"」部分を変更したいのですが。
教えて頂けますか。
よろしくお願いします。