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

タイトルの件、本サイトにて、VBAコードの指導を頂きました。
少し、追加修正をしたく、相談させて頂きます。


【現状:動きます。下記参照】
エクセルの あファイル【コピー元】を明日の日付の名前を付けて
3つのフォルダにコピー【コピー先】する


【仮定:本日:12/21とする】

【コピー元】
C:\Users\2020\Desktop\実験\あ.xlsx

【コピー先】

C:\Users\2020\Desktop\実験\あ

⇒20221222.xlsxがコピーされる


C:\Users\2020\Desktop\実験\い

⇒20221222.xlsxがコピーされる

C:\Users\2020\Desktop\実験\う

⇒20221222.xlsxがコピーされる

【追加したい事】

NO.1
・コピー後の名前をあ+明日の日付に変更したい
⇒下記のとおりです

【変更前】
20221222.xlsx

【変更後】
あ20221222.xlsx

NO.2
本マクロを誤って2回実行した時に
既に、同じファイルがあるメッセージを出して
⇒上書きは出来ないようにする
⇒ファイルをコピーできないという意味です。
⇒既に作成されている為



【コード:1つのファイルを3つのフォルダに明日の日付の名前にして
コピーするコード。動きます】
Sub 明日の日付ファイル3つ作成()

Dim dt As Date
Dim fn As String

' 今日の日付
dt = Now()
' 明日の日付に変更
dt = dt + 1

' ファイル名を生成
fn = Format(dt, "yyyymmdd") & ".xlsx"

' ファイルコピー
FileCopy "C:\Users\2020\Desktop\実験\あ.xlsx", "C:\Users\2020\Desktop\実験\あ\" & fn
FileCopy "C:\Users\2020\Desktop\実験\あ.xlsx", "C:\Users\2020\Desktop\実験\い\" & fn
FileCopy "C:\Users\2020\Desktop\実験\あ.xlsx", "C:\Users\2020\Desktop\実験\う\" & fn


End Sub

A 回答 (2件)

No1です。



>コピーの後のファイル名前に
>あ と入れたいという意味です。
あぁ、ごめんなさい。 見落としてしまったようです。

パスやファイル名は文字列なので、文字列演算で作成すれば良いだけです。
「あ」を入れるのなら、新しいファイルパスを
>"C:\Users\2020\Desktop\実験\あ\" & fn
      ↓ ↓ ↓
 "C:\Users\2020\Desktop\実験\あ\あ" & fn

のようにしておけば宜しいでしょう。
    • good
    • 1
この回答へのお礼

すいません。うまく、いきました。上記はありがとうございます。

他、相談していた、既に同じふあぃるがありますのなのですが
ご指導いただいた、コードにて、下記で試したのですが


●エラーメッセージ:IFに対するend IFがありませんと表示されます
●また、やりたい事は、メッセージが出るようにしたいです
「既に同じファイルがあります」というようなです

ご指導よろしくお願いいたします

Sub 明日の日付の名前を付加したファイルを3つのフォルダに作成()

Dim dt As Date
Dim fn As String

' 今日の日付
dt = Now()
' 明日の日付に変更
dt = dt + 1

' ファイル名を生成

fn = Format(dt, "yyyymmdd") & ".xlsx"

' ファイルコピー


If Dir("C:\Users\user\Desktop\実験\あ\あ" & fn) = "" Then
FileCopy "C:\Users\user\Desktop\実験\あ.xlsx", "C:\Users\user\Desktop\実験\あ\あ" & fn



If Dir("C:\Users\user\Desktop\実験\い\あ" & fn) = "" Then
FileCopy "C:\Users\user\Desktop\実験\あ.xlsx", "C:\Users\user\Desktop\実験\い\あ" & fn



If Dir("C:\Users\user\Desktop\実験\う\あ" & fn) = "" Then
FileCopy "C:\Users\user\Desktop\実験\あ.xlsx", "C:\Users\user\Desktop\実験\う\あ" & fn




End Sub

お礼日時:2022/12/21 23:13

こんにちは



ご質問のNo1はすでにできていると思いますので、No2について。

ファイルが既に存在するかどうかはDir関数で調べることができます。
事前に調べて、存在しなければ保存するようにすれば宜しいのではないでしょうか?

具体的には、
If Dir("C:\Users\2020\Desktop\実験\あ\" & fn)="" Then _
FileCopy "C:\Users\2020\Desktop\実験\あ.xlsx", "C:\Users\2020\Desktop\実験\あ\" & fn

といった要領です。
(フォルダ自体は存在しているという前提条件です)

※ 何度も長いパスを繰り返すのがうるさければ、変数に代入しておいてそれを利用する方が視認性は良くなるかもしれません。
※ 同じような内容を3回繰り返して記述するのが面倒なら、ループを利用して処理する方法もあるでしょう。
    • good
    • 0
この回答へのお礼

お返事、素早くありがとうございます。

>ご質問のNo1はすでにできていると思いますので
ついてなのですが、コピーの後のファイル名前に

あ と入れたいという意味です。
現状、fujillin様に教授いただいたコードでは
下記のとおです。

アドバイス頂けると幸いです。
NO2については、組入れて、試してみます。

宜しくお願いいたします。

【現状】
20221222.xlsx

【修正後】
20221222.xlsx

お礼日時:2022/12/21 18:33

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