[[20170612095040]] 『マクロで保存先を選択してフォルダごと保存する方』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロで保存先を選択してフォルダごと保存する方法』(初心者)

初めまして。

あるプログラムで、コマンドボタンをクリックしてバックアップを開始する場合、「名前を付けて保存」メニューを表示して任意で選択した場所に「A」のフォルダを保存したいんですが、どのようにプログラミングすればいいでしょうか。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


例えば、ActiveXのボタンをシートに貼り、これを押すとダイアログを表示する例です。 使っている命令をキーワードにして、いろいろ調べてみると良いでしょう。
 Private Sub CommandButton1_Click()
    With Application.FileDialog(msoFileDialogSaveAs)
        If .Show = True Then
            MsgBox .SelectedItems(1)
        End If
    End With
 End Sub

なお、これは保存したいファイル名フルパスを得るまでであり、実際の保存はMsgBoxではなく、ブックのSaveAsを行う必要があります。
(???) 2017/06/12(月) 10:12


あ、これだとフォルダは作成しませんね。質問内容を勘違いしました。
保存するファイルではなく、フォルダ指定に変えて、フォルダが無ければ作成してから、SaveAsすると良いです。

 Private Sub CommandButton1_Click()
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then
            If Dir(.SelectedItems(1) & "\A", vbDirectory) = "" Then
                MkDir .SelectedItems(1) & "\A"
            End If
            ThisWorkbook.SaveAs .SelectedItems(1) & "\A\test.xlsm", xlOpenXMLWorkbookMacroEnabled
        End If
    End With
 End Sub
(???) 2017/06/12(月) 10:34

 >任意で選択した場所に「A」のフォルダを保存したいんですが
 フォルダごとコピーしたい?

 初めに保存するフォルダを選択、次に保存先フォルダを選択

 Sub test()
    Dim myFolders(1) As String, i As Long
    For i = 0 To 1
        With Application.FileDialog(msoFileDialogFolderPicker)
            If .Show Then myFolders(i) = .SelectedItems(1)
        End With
    Next
    If (myFolders(0) = "") + (myFolders(1) = "") Then Exit Sub
    CreateObject("Scripting.FileSystemObject").CopyFolder myFolders(0), myFolders(1) & "\"
End Sub
(seiya) 2017/06/12(月) 11:06

お二方、回答をありがとうございました。

さっそく参考にさせていただきます。
(初心者) 2017/06/12(月) 11:08


seiya様

保存するフォルダ名が 「C:\AAA」の場合は記述はどのようになるんでしょうか。

度々で申し訳ございません。

(初心者) 2017/06/12(月) 14:42


 保存するフォルダ名を「C:\AAA」で固定する。ということ?

 Sub test()
    Dim myFolder As String
    Const NewFolder As String = "C:\AAA\"
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then myFolder = .SelectedItems(1)
    End With
    If myFolder = "" Then Exit Sub
    CreateObject("Scripting.FileSystemObject").CopyFolder myFolder, NewFolder
End Sub
(seiya) 2017/06/12(月) 14:58

seiya様

これで完璧です。

ありがとうございました。
(初心者) 2017/06/12(月) 15:10


seiya様

逆に保存元のフォルダ名が 「C:\AAA」の場合の記述はどのようになるんでしょうか。

(初心者) 2017/06/12(月) 15:57


 >保存するフォルダ名が 「C:\AAA」
 コピー元フォルダをC:\AAAで固定、という意味でしたか...

 Sub test()
    Dim NewmyFolder As String
    Const myFolder As String = "C:\AAA"
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then NewFolder = .SelectedItems(1) & "\"
    End With
    If myFolder = "" Then Exit Sub
    CreateObject("Scripting.FileSystemObject").CopyFolder myFolder, NewFolder
End Sub
(seiya) 2017/06/12(月) 16:18

大変参考になりました。

ありがとうございました。
(初心者) 2017/06/12(月) 16:26


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.