アプリ版:「スタンプのみでお礼する」機能のリリースについて

タイトルの件、下記のマクロがあります。
ケース1の場合、2つのファイルがある場合は
実行されるのですが

ケース2の場合、A_a.pdfファイルがなく、A.pdfだけの場合は
エラーとなります。
⇒やりたい事はケース2の場合でも、A.pdf は
マクロ2のとおり、フォルダBへ移動して欲しいのです。

ご存じのかた、教えて下さい。


【マクロ1の説明】
フォルダAにある、ファイルの名前に_aがついたファイルを
フォルダCへ自動で移動する

【マクロ1の説明】
フォルダAにある、名前に_aがついていないファイルを
フォルダBへ自動で移動する


【ケース1】

【フォルダA↓ファイル2つあり】
A_a.pdf
A.pdf

マクロ実行
【フォルダC】
A_a.pdf

【フォルダB】
A.pdf

【ケース1】

【フォルダA↓ファイル1つあり】
A.pdf

マクロ実行⇒エラーとなる
⇒A.pdfは、フォルダBへ移動して欲しい

【フォルダC】


【フォルダB】



~マクロ~

【下記の2つのマクロ呼び出し実行します】
Sub Macroの統合()
Call マクロ1
Call マクロ2
End Sub





【2つのマクロを上記のマクロで呼び出し実行】


Sub マクロ1()


Dim fso As New FileSystemObject

Dim sFile As String

Dim dFile As String


sFile = "C:\Users\2020\Desktop\" & ChrW(12886) & "あいうえお\フォルダA\*_a.*"

dFile = "C:\Users\2020\Desktop\フォルダC"

fso.MoveFile sFile, dFile

End Sub
Sub マクロ2()


Dim fso As New FileSystemObject


Dim sFile As String

Dim dFile As String


sFile = "C:\Users\2020\Desktop\" & ChrW(12886) & "あいうえお\フォルダA\*"

dFile = "C:\Users\2020\Desktop\ファイル移動\実験室\①\②\フォルダB"

fso.MoveFile sFile, dFile

End Sub

A 回答 (2件)

こんにちは


ファイルの存在を確認して実行するのが良いと思います
方法は色々あります。dirなどは良く使われる方法ですね
ここは、調べてください

で、こんな方法を回答するとまずいのかも知れませんが
エラーを出さない方法は調べて追記するとして

取り合えず、ならば
Sub Macroの統合()
On Error Resume Next
Call マクロ1
Call マクロ2
End Sub
で実行できると思います。

通常 On Error Resume Nex tは使わない方が良いです
なぜなら、プロセスの不具合を見逃す可能性があるからです
    • good
    • 0

こんにちは



>A.pdfだけの場合はエラーとなります。
どのようなエラーか記してないので不明ですが、想像するところ「ファイルが見つかりません」というメッセージが出ていませんか?

であるなら、メッセージッ通りです。
「(存在しない)ファイルを移動しろ」を実行しようとして、「ないものは移動できん!」とエラーを出していることになります。

もし、上記の状態であるなら、無条件で移動せずに該当ファイルの存在をチェックすれば良いのではないでしょうか?
 IF Fso.FileExists(sFile) Then ~~~
といった感じ。
    • good
    • 1
この回答へのお礼

お返事ありがとうございます。
IF Fso.FileExists(sFile) Then ~~~の後
出来ましたら、ご教授お願いします。

自分作成しましたが、動きませんでした。
【下記は動かなかったものです】
Sub マクロ1()


Dim fso As New FileSystemObject

Dim sFile As String

Dim dFile As String

sFile = "C:\Users\2020\Desktop\" & ChrW(12886) & "あいうえお\フォルダA\*_k.*"

dFile = "C:\Users\2020\Desktop\フォルダC"



If FSO.FileExists(sFile) Then
fso.MoveFile sFile, dFile





End Sub
Sub マクロ2()


Dim fso As New FileSystemObject


Dim sFile As String

Dim dFile As String




sFile = "C:\Users\2020\Desktop\" & ChrW(12886) & "あいうえお\フォルダA\*"



dFile = "C:\Users\2020\Desktop\ファイル移動\実験室\①\②\フォルダB"



fso.MoveFile sFile, dFile





End Sub

お礼日時:2022/07/29 19:45

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


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