[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フォルダ自動生成し、ブックを保存』(ユキシ)
フォルダ自動生成し、ブックを保存
ご教示願います。
AフォルダにA01ブックが、あり
A01ブックには、
シートAA,AB,ACが、あります。
シートAAには、
チェックボックス
AB,ACが、あります
仮にABのチェックボックスにチェックを入れ、ボタンを押すと
1,A01ブックを上書き保存
2,シートABだけをコピー、
3,既存のBフォルダに、A01フォルダを生成
4,生成した、A01フォルダ内に、A01ZZという名前を付けて保存。
上記のような、一連の流れを
チェックを入れ、ボタン一つで、
行いたいのですが、得意な方、
サンプルをお願い出来ますか?
当方、「マクロを記録する」でしか、
マクロを使用出来ない素人ですので、
お手柔らかに願います。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
例えば、チェックボックスって、セルにチェック文字を書いたものなのか、フォームオブジェクトのチェックボックスを貼っているのか、ActiveXのチェックボックスを貼っているのか判りません。更には、オブジェクトを貼っているなら、リンクしたセルは設定しているのか、具体的にそれはどのセルなのか等、さっぱりです。 そして、チェックボックスの文字列は、シート名になっているのでしょうか? それとも、オブジェクト名をAB,ACに変えているのでしょうか?
更には、フォルダ名とかファイル名とか、抽象化してしまっていて、よく判りません。A01は自分のブック名だし、ZZは関連するものが無いようだし、つまり "\A01\A01ZZ.xlsm" というファイル名は固定、という事ですかね? それとも、ZZとは、シート名に置き換える? 置き換えるなら元のブック名と被る事は無いのだし、フォルダを掘る必要は無さそうですが…。
ちなみに、Excelシートでチェックボックスをオブジェクトを貼って実現すると、カーソル移動対象外だし、間違えて摘まんで移動させてしまったりするし、使いにくいので、「データの入力規則」で○×とか記号を選択するようにするのが一般的かと思います。
(チェックボックスって座標で貼っているので、どのセル上にあるのかをマクロで調べるのも面倒なので、自分でマクロを考える人は、シートに貼って使わないように思います)
とりあえず、フォルダ作成するなら MkDir、名前を付けて保存なら SaveAs を調べてみてください。
(???) 2017/08/22(火) 09:02
チェックボックスの件もありがとうございます。
ブック内にある20近くあるシートをボタン一つで
選択したものだけ、コピー、フォルダ作成、名前を付けて保存の
選択する方法としての素人考えです。
素人考えですので、代替えの案などあれば、教えていただけますでしょうか。
(ユキシ) 2017/08/22(火) 09:39
例えば、以下のコードをAAシートのシートモジュールとして実行すれば、簡単にシート一覧と○×選択ができあがりますよ。
Sub test1() Dim i As Long Dim iR As Long
For i = 1 To Sheets.Count With Sheets(i) If .Name <> Me.Name Then iR = iR + 1 Me.Cells(iR, "A").Value = .Name End If End With Next i With Me.Range("B1:B" & iR).Validation .Delete .Add Type:=xlValidateList, Operator:=xlBetween, Formula1:="○,×" End With End Sub
とりあえず、チェックボックスを使った現状のレイアウトが知りたいので、コード待ってますね。あと、オブジェクトを貼っているならば、フォームコントロールのものか、ActiveXのものかの区別も。(マクロが全然違ってきます)
(???) 2017/08/22(火) 10:55
試しを記録しましたので、診ていただけますか。
また、この記録ですと、
・選択出来ないので、実行すると全てのシートが、実行されてしまいます。
・試しなので、シートの数は少ないです。
・また、使用後にTEST1というフォルダを他に切り取ってしまいますので、
再度、実行した際に 『TEST1』のフォルダが見つかりませんのエラーが出てしまいます。
選択及びフォルダ作成のお知恵をご教示下さい。
尚、大元のシート『オリジナル』には、シートA〜Cまでの数値を入力する項目があり、
A〜Cのシートは、決められたフォームで、数値が、リンクしています。
ですので、大元のシート『オリジナル』の各々数値を入力する場所に選択できる
何かで、選択し、選択されたシートだけ実行できるようにしたいのです。
宜しくお願い致します
'
ActiveWorkbook.Save Sheets("A").Select Sheets("A").Copy ChDir "C:\Users\YUKISHI1\Desktop\試し\TEST\TEST1\A" ActiveWorkbook.SaveAs Filename:= _ "C:\Users\YUKISHI1\Desktop\試し\TEST\TEST1\A\A.xlsx", FileFormat:= _ xlOpenXMLWorkbook, CreateBackup:=False ActiveWindow.Close Sheets("B").Select Sheets("B").Copy ActiveWorkbook.SaveAs Filename:= _ "C:\Users\YUKISHI1\Desktop\試し\TEST\TEST1\A\B.xlsx", FileFormat:= _ xlOpenXMLWorkbook, CreateBackup:=False ActiveWindow.Close Sheets("C").Select Sheets("C").Copy ActiveWorkbook.SaveAs Filename:= _ "C:\Users\YUKISHI1\Desktop\試し\TEST\TEST1\A\C.xlsx", FileFormat:= _ xlOpenXMLWorkbook, CreateBackup:=False ActiveWindow.Close ActiveWorkbook.Save End Sub
(ユキシ) 2017/08/22(火) 12:38
とりあえず、フォームコントロールのチェックボックスを貼っていて、その表示文字列が該当シート名になっている、と仮定したマクロなぞ。
Sub test() Dim C As Object Dim cw As String
cw = ThisWorkbook.Path & "\" & Split(ThisWorkbook.Name, ".")(0) If Dir(cw, vbDirectory) = "" Then MkDir cw End If
For Each C In Me.CheckBoxes If C.Value = xlOn Then Sheets(C.Caption).Copy ActiveWorkbook.SaveAs Filename:=cw & "\" & Split(ThisWorkbook.Name, ".")(0) & C.Caption & ".xlsx", _ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWorkbook.Close End If Next C End Sub (???) 2017/08/22(火) 12:55
はずかしながら当方、本当の初心者です。。。。
どことどこを変更してマクロとして登録して良いかわかりません。
「フォームコントロールのチェックボックス」は、大元のシートに作成し各シート
と同じ名称にしました。
(ユキシ) 2017/08/22(火) 13:18
ここに、私の書いたマクロをそのままコピペしてください。 ご覧の通り、自ブックの保存場所を元に処理しているので、どこも変える必要はないです。貼りつけたら、マクロの編集画面を閉じます。
ALT+F8で、実行するマクロの選択画面になるので、ここで「test」を選択して実行すれば終わりです。
マクロを頻繁に使うようならば、リボンの「開発」タブをチェックして常時表示させると便利ですよ。 このあたりは、マクロの使い方について調べてみてください。 例えば、ActiveXのボタンを貼って、このプロシジャに今回のコードを貼れば、貼ったボタンを押すだけで、何度でも実行できるようになります。
(???) 2017/08/22(火) 13:31
Sub test()
Dim C As Object Dim cw As String
cw = ThisWorkbook.Path & "\" & Split(ThisWorkbook.Name, ".")(0) If Dir(cw, vbDirectory) = "" Then MkDir cw End If
For Each C In Me.CheckBoxes If C.Value = xlOn Then Sheets(C.Caption).Copy ActiveWorkbook.SaveAs Filename:=cw & "\" & Split(ThisWorkbook.Name, ".")(0) & C.Caption & ".xlsx", _ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWorkbook.Close End If Next C End Sub
(ユキシ) 2017/08/22(火) 13:39
左側のツリーなるものが、ありません。表示の仕方でしょうか?
(ユキシ) 2017/08/22(火) 13:58
取り急ぎ
出来ました!!!!!
感動してます!!!
(ユキシ) 2017/08/22(火) 14:35
取り急ぎ、超ど素人の当方に対し、詳細、迅速、丁寧に対応して頂き
ありがとうございます!!!!!!!!!!!!!!!!!!!!!!
明日以降に再度本来のファイルで試したいと思いますので、
もう少しの期間だけお付き合いお願いできますでしょうか。
宜しくお願い致します
(ユキシ) 2017/08/22(火) 14:44
2点ほどお願いします
1.現状は、「ブックの名前の新規フォルダ」を生成しその中に選択シートが、全て入っております。
「ブックの名前の新規フォルダ」の中に更に、おのおの「選択したシート名のフォルダ」を生成し、
その中に「選択したシート」が保存できるように出来ますか?
2.現状ですと、新規フォルダの掃出し先が、元のブックと同じ場所なのですが、
別のフォルダに吐出したいの場合どの部分を編集したら宜しいでしょうか。
お忙しければ後日で構いませんので、宜しくお願い致します。
(ユキシ) 2017/08/22(火) 15:03
考え方だけ書きますと、まず、MkDir がフォルダを作成する命令であり、cw には自分のフルパスに、ブック名を加えた文字列が入るようになっています。
これに更にシート名を加えるように変更し、Forループの内側に移動させてください。
また、cwは ThisWorkbook.Path から始まっていますが、これが自ブックの存在するフルパスです。 他の場所に変えたいならば、ここを "c:\test\" とか、任意の固定フォルダに変えれば良いだけです。
(???) 2017/08/22(火) 15:24
読解のコメントを見てもちんぷんかんぷんですので、また、どなたかに
ご相談したいと思います。
ここまでこれたのも(???)様のおかげです。
この度は、本当にありがとうございました。
(ユキシ) 2017/08/22(火) 20:53
情報共有です。
http://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=182760&rev=0
(とおりすがり) 2017/08/24(木) 13:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.