ここから本文です

ExcelVBAのことでご教示お願いします。

chi********さん

2016/9/1021:13:08

ExcelVBAのことでご教示お願いします。

activebookでuserform1があり
その中にチェックボックス、コマンドボタンがあります。
チェックボックスにチェック有のときの処理
そのactivebookが入っているフォルダをコピーし
マイドキュメントにフォルダごと張り付けし、
その時に開いているbook全て上書き保存して閉じる。

チェックボックスにチェックがないときの処理
開いているbook全て上書き保存して閉じる。

という処理を行いたいのですが、やりかたがわかりません…
どうかご教示ください!よろしくお願いします。

閲覧数:
48
回答数:
1

違反報告

ベストアンサーに選ばれた回答

mas********さん

2016/9/1308:51:41

コード例です。
検証はしていないので、不具合があればご返信ください。
コマンドボタンやチェックボックスの名前を変えている場合は、コード内の「CommandButton1」や「CheckBox1」をその名前に書き換えてください。

Private Sub CommandButton1_Click()
Dim FSO As New FileSystemObject
Dim FolderName As String
Dim DocPath As String
Dim Bk As Workbook
Dim buf As String

FolderName = Mid(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") + 1)
DocPath = CreateObject("Wscript.Shell").SpecialFolders("MyDocument")
Do
buf = Dir(DocPath & "\" & FolderName)
If buf = "" Then Exit Do
FolderName = "コピー" & FolderName
Loop

If CheckBox1.Value = True Then
FSO.CopyFolder ThisWorkbook.Path, DocPath & "\" & FolderName
End If

For Each Bk In Workbooks
If Bk.Name <> ThisWorkbook.Name Then
Bk.Close SaveChanges:=True
End If
Next
ThisWorkbook.Close SaveChanges:=True
End Sub

(注)
マイドキュメントにすでに同じ名前のフォルダが存在する場合の処理が書かれていませんでしたので、その場合は「コピー」という文字を頭につけたフォルダ名としてコピーしています。
上書きしたい場合は、「Do~Loop」の部分を削除してください。

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる