Excelで質問です。
ボタンをクリックすると新規ブックを作成するようにしたいのですがうまくいかず・・・。何かいい方法はないでしょうか。よろしくお願いします。
Sub ボタン_Click()
Workbooks.Add.SaveAs Filename:="C:\temp\1-50.xls"
End Sub
にてブックを作成することは出来るのですが、その作成したExcelのシートの数を50個にし、さらにそのシートに「1」から「50」というシート名を付けたいのですが不可能でしょうか。
よろしくお願いします。
No.1
- 回答日時:
新規ブックに対してシート名の変更と追加を行えば良いだけです。
Sub test()
Dim i As Integer
Dim Ws As Worksheet
Workbooks.Add.SaveAs Filename:="C:\temp\1-50.xls"
Workbooks("1-50.xls").Activate
i = 1
For Each Ws In Worksheets
Ws.Name = i
i = i + 1
Next
For i = Worksheets.Count + 1 To 50
Worksheets.Add after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = i
Next
End Sub
この回答への補足
早速のご解答ありがとうございます。マクロのすばらしさを痛感しました。
今回は「1-50」だったのですが「51-100」、「101-150」などのようにシート名やブック名を変更することは可能ですか?マクロで書き込むというよりも開始番号と終了番号を入力しボタンを押すとその入力した番号のシートができるというような・・・。
また、新規ブックですのでシートの中身は空白なのですが、既存のブックの内容をコピーするということは可能なのでしょうか?
No.2
- 回答日時:
下記などどうでしょう?
ループはどのみち2回必要なので、シート追加/名前変更とでわけました。
新規ブックはデフォルトで複数のシートがあるので、それを差し引いた分だけシートを追加するようにしてあります。
少しずつ改良して好みのマクロを作成されてください。
(例:シート数が指定できる、書類名を変えられる等)
Sub ボタン_Click()
Dim Snum, i As Integer
'新規ブック追加
Workbooks.Add
'シートを必要分追加
For i = Sheets.Count + 1 To 50
Sheets.Add
Next
'シートの名前変更
For i = 1 To Sheets.Count
Sheets(i).Name = i
Next
'シートの保存
ActiveWorkbook.SaveAs Filename:="C:\temp\1-50.xls"
End Sub
No.3
- 回答日時:
No.2です。
すでに回答されていしたね。回答への補足にある番号の件は可能です。
仮にセルに開始番号、終了番号があったとすれば、
ST=開始番号が入ったセルの値
ET=終了番号が入ったセルの値
とし、
私のコードのうち、下記の部分を以下のように変えます。
'シートを必要分追加
For i = Sheets.Count + 1 To ET-ST+1
Sheets.Add
Next
'シートの名前変更
For i = 1 To Sheets.Count
Sheets(i).Name = ST-1+i
Next
といった具合です。
既存のブックのコピーは(既存のブックを)開いて別名保存(SaveAs)すると考えてはどうでしょう?
この回答への補足
ありがとうございます。
『ST=開始番号が入ったセルの値
ET=終了番号が入ったセルの値』
というのは入力可能なのでしょうか?
マクロの中で書き込むというより、作成しているボタンの横とかに入力フォームを作成しそこに開始番号、終了番号を入力しボタンを押すと作成されるというような・・・。
初心者のため分からないことが多いですがお願いします。
No.4ベストアンサー
- 回答日時:
No.2です。
可能です。
たとえば 開始番号がセルのB1、終了番号がB2に入れてあるとします。
そうすると、
ST=Range("B1").Value
ET=Range("B2").Value
とすれば値が変数に格納されます。
これがユーザーフォームの場合、
2つテキストボックスをフォーム内に作成し、
そのテキストボックスの値を変数に格納したい場合は、
ST=TextBox1.Value
ET=TextBox2.Value
というような記述でよいです。
要は オブジェクト名 + .Value で オブジェクトの値を取得すると思ってください。 これは「プロパティ」といわれるものです。 似たような記述で、オブジェクト名 + .add などがありますが、こちらは 「メソッド」と呼ばれ、オブジェクトに何か処理を与えるものと思ってください。
プロパティやメソッドはオブジェクト毎に異なります。
詳しく知りたい場合は、エクセルのヘルプ→Excel VisualBasicリファレンス の中の、「オブジェクトおよびコレクション」を見てください。
テキストボックスやボタンなどのオブジェクト名を知りたい/変更したい場合は、そのオブジェクトを選択した状態で(VBE上です)左にある、「プロパティ」タブの「オブジェクト名」を見てください。
今回のコード群にはミスよけ、エラー処理等は施していません。その辺はまたじっくり勉強してください。(たとえば開始番号150 終了番号100だとエラーになりますし、文字など整数以外の値が入っていてもエラーになります。) 個人で使う分には間違えないように入力すればいいかと思いますが。
No.5
- 回答日時:
>シート名やブック名を変更することは可能ですか?
簡単ですよ。
(エラーチェックしていません。)
Sub test2()
Dim i As Integer
Dim in1 As Integer, in2 As Integer
Dim Fname As String
Dim Ws As Worksheet
in1 = InputBox("開始番号")
in2 = InputBox("終了番号")
If in1 > in2 Then Exit Sub
Fname = in1 & "-" & in2 & ".xls"
Workbooks.Add.SaveAs Filename:="C:\temp\" & Fname
Workbooks(Fname).Activate
Do While (in2 - in1) >= Worksheets.Count
Worksheets.Add after:=Worksheets(Worksheets.Count)
Loop
i = in1
For Each Ws In Worksheets
Ws.Name = i
i = i + 1
Next
End Sub
>既存のブックの内容をコピーするということは可能なのでしょうか?
ブックを丸ごとコピーするなら、一端開いてから別名保存が一番簡単でしょう。
特定のシートをコピーする事も可能です。
マクロの記録を使って手動で操作したコードを確認し、ヘルプやネットを使ってコードの動作を勉強して下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの警告について
-
エクセルを共有するとPCによっ...
-
VBAでブックを非表示で開いて処...
-
Excelでブックの共有を掛けると...
-
エクセルの関数 ENTERを押...
-
エクセルで参照しているデータ...
-
アクセスvbaでエクセルブックを...
-
エクセルで別ブックをバックグ...
-
複数ファイルから特定シートの...
-
別フォルダにある同じ名前のブ...
-
VBAでブック保護非保護を判定す...
-
vbaでpdfを開いて1ページ目のみ...
-
同じフォルダへのハイパーリン...
-
Excelで拡張子の後に数字が……何...
-
エクセルで50行ごとに区切った...
-
エクセル2010 書式が多すぎて...
-
ワードやエクセルで「時間が来...
-
Excel(2010)のフィルターが保...
-
エクセル2016です。「ブッ...
-
エクセルVBAでブック保護のUser...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
Excelの警告について
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルにおける,「ブック」...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
エクセルで「ディスクがいっぱ...
-
Excelで複数ブックの同一セルに...
-
【マクロ】【VBA】別ブックへの...
-
Excel(2010)のフィルターが保...
-
Excelでブックの共有を掛けると...
-
エクセルで50行ごとに区切った...
-
エクセルでウィンドウの枠固定...
-
同じフォルダへのハイパーリン...
-
ブックのピボットを別ブックに...
-
VBAでブック保護非保護を判定す...
-
【マクロ】for nest について ...
-
エクセルファイルを開かずにpdf...
-
フォルダ内の複数ファイルから...
おすすめ情報