Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2021)
フォルダ内のファイルをコピーしたい
投稿日時: 22/08/16 19:58:06
投稿者: パリピア

フォルダ内にある、複数のファイルをすべて同じフォルダ内にコピーして複製をつくりたいです。ご教授よろしくお願いいたします。

回答
投稿日時: 22/08/16 22:07:01
投稿者: WinArrow
投稿者のウェブサイトに移動

手操作で「フォルダのコピー」で簡単にできるけど
VBAでも、同様のコマンドで対応できる。
 
どうしてもVBAでなければ、いけないのかな?

回答
投稿日時: 22/08/16 22:14:54
投稿者: WinArrow
投稿者のウェブサイトに移動

追加レス
  
複製といても、まったく同じには、ならないが・・・
  
例えば、ファイルの作成日時、サブフォルダの作成日時など・・・
 
複写元フォルダが存在するデバイスのアイルシステムと複写先のデバイスのアイルシステムが違う
とデバイス上のファイル占有容量が違ってきます。

回答
投稿日時: 22/08/19 10:17:08
投稿者: simple

パリピアさんへ。
返事くらいして頂きたいですね。
折角、HNを登録されたのに、使いにくくなってしまいますよ。
 
さて、少しコメントをしておきます。
(1)バックアップ目的なら、同じフォルダではなく、その下にサブフォルダを作って、
   そこにそのままコピーしたほうがよいと思われます。
 
(2)同一フォルダ内に、ファイルを増殖していくという目的なら、
   copy先のファイル名をどうするかを決めないといけないでしょう。
   同一フォルダ内に同名ファイルはありえないので。
 
また、そのフォルダの全ファイルですか?それとも一部のファイルですか?
誤解のないような書き方にしたほうがよいでしょう。
以下、全ファイルという前提で参考コードを示します。

Sub test()
    '対象とするフォルダのパス名
    Const folderName As String = "D:\MyDocuments\AAA\BBB\"
                                '■適宜修正のこと。
                                '末尾の"\"を忘れないこと
    Dim fso As Object
    Dim f As Object
    Dim copyName As String
    'Dim baseName As String
    'Dim extName As String
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    For Each f In fso.GetFolder(folderName).Files
        copyName = "copy-" & f.Name    'ファイル名の頭に、"copy-"を付ける
        
        'file名の末尾に"-copy"を付ける場合は下記
        'baseName = fso.GetBaseName(f.Path)
        'extName = fso.GetExtensionName(f.Path)
        'copyName = baseName & "-copy" & "." & extName
        
        f.Copy folderName & copyName    'ファイルのコピー
    Next
End Sub
フォルダ内の指定した一部のファイルだけということなら、
GetOpenFileNameを使って指定することになるでしょう。(MultiSelect引数をTrueにします)
その場合は、上記に準じて対応できます。
追加コメントが必要なら、その旨、意思表示してください。
# 無駄になりそうな予感がするので控えます。

回答
投稿日時: 22/08/20 16:21:45
投稿者: WinArrow
投稿者のウェブサイトに移動

私のレス、質問と違いますね?勘違いしていました。
 
同じフォルダ内のファイルを手操作で複写すると
ファイル名の後に「(1)」のような文字列が自動追加されますね?
 
これと同じことをVBAで実行したいと
いうことでしょうか?
 

投稿日時: 22/08/26 09:00:42
投稿者: パリピア

皆様ご回答ありがとうございます!返信が遅れて申し訳ございませんでした。質問の仕方が悪く申し訳ございませんでした。皆様がおっしゃる通り、別の方法がありそうなので、もう少し言動してみます。