マンガでよめる痔のこと・薬のこと

エクセルでマクロを使って、シートを追加して、シート名を次月となるように変更したいのです。欲を言えば、今のシートをコピーして新しく作ったシートに貼り付けまでできれば最適です。例ですが、今操作中のシート名が3月とします。内容は3月の集計表を作成です。ここでマクロを実行して、新しくシートを追加しシート名を4月としてシートの内容は3月の内容をコピーして貼り付けしたいのです。仮に5月でも実行すれば6月のシートが作成できるようにしたいのです。ご教授ください。マクロは初心者です。操作はできます。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こんなんでどうですか。



---
Sub test()
Dim i As Integer

'最後のシートをコピーしその後ろに追加
Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)

'名前を変更
i = Left(Sheets(Sheets.Count - 1).Name, Len(Sheets(Sheets.Count - 1).Name) - 1)
Sheets(Sheets.Count).Name = IIf(i + 1 > 12, 1, i + 1) & "月"

End Sub
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。変数の宣言をして「最後のシートをその後ろに追加という」発想が自分には思いつきませんでした。確かに、自分の用途としては、最後を増やすこと意外ありません。それから12月から1月の切り替えですが、IIf(i + 1 > 12, 1, i + 1) & "月"とても参考になりました。自分には非常に役に立ちます。ありがとうございます。

お礼日時:2011/04/05 17:23

ここへ質問する前に、操作をしてマクロの記録をなぜ採らないのか。


そして次の月にはどこをどう変えればよいか、を考えることだ。
Sub Macro3()
Sheets("Sheet1").Select
Sheets.Add
Sheets("Sheet4").Select
Sheets("Sheet4").Name = "5"
End Sub
(1)この場合に前の月のシート(名)はどういう風に捕まえるか問題
こんなことも、質問で「次月」と済ましてしまうようでは、プログラムは進まない。
今月シートとは何かから考えないと。
必ず今月シートを開いて、完成したVBAを実行するなら、ActiveSheetなどの捉え方を使えるが、不便では?。
シート名をそもそどうするかを考えないと(質問に明記して質問しないと)。
(2)次の月をどうして決めるか。、特に12月の次は1月にしなければならないが、どう計算などするか。
日付シリアル値に持ち込んで、月部分に+1するのが確実なように思う。
月数字以外と、月数字部分を分ける
シート名から年、月、1の日を作り、そこから関数で年、月+1,1の日を作り、年、月の部分を文字列化して、月数字以外部分を加えるなど、どうかな。
人間にシート挿入のシート名を毎度答えさせる手もあり、結構安定性があるようにもおもうが。
(3)3月の内容をコピーして貼り付けしたいのです
これもマクロの記録でコードがわかる。次の月になると、データ数の増減などで、コピーするセル範囲は変わるのかな(フォーと尾が決った表で固定なのか?)。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。まず、ごもっともなご指摘ありまがとうございます。素人ゆえに、将来恥ずかしい質問もすることもあると思います。自分なりに検索したり、記録などで読み取ろうともしましたが、解決には至らず、質問しました。わからないから質問するという人もいることをご理解ください。内容に至っては、12月と1月の件などその考え方の基礎を理解できました。その難しさもわかりました。やって覚えるというよりは、基本の考え方を地道に蓄積していくしかないということも理解できました。マクロについては、ご回答のように「5」のシートができました。ありがとうございます。

お礼日時:2011/04/05 17:46

No.2です!


たびたびごめんなさい。

12月の場合を考慮していませんでした。

↓のコードに訂正してください。

Sub test()
Dim i As Long
i = WorksheetFunction.Substitute(ActiveSheet.Name, "月", "") * 1
ActiveSheet.Cells.Select
Selection.Copy
Worksheets.Add after:=ActiveSheet
ActiveSheet.Paste
If i = 12 Then
ActiveSheet.Name = "1月"
Else
ActiveSheet.Name = i + 1 & "月"
End If
Application.CutCopyMode = False
ActiveSheet.Range("A1").Select
End Sub

何度も失礼しました。m(__)m
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。また、訂正版もありがとうございます。
実際に自分もやってみましたが、13月になりました。しかし、そういうことも大事なことですから
実際に、この改訂版との違いで、すごく役にたちました。もしも改訂版が最初に投稿されていたら自分はそのことに、気付かずにいた気がシマス。参考になりました。改訂版できました。12月の次は1月になるという定義など、少しづつわかってきました。ありがとうございます。

お礼日時:2011/04/05 17:29

こんにちは!


一例です。

同一ブック内で同じSheet名を付けることはできませんので、
今操作中のSheet名の月の翌月sheet名はないということが大前提です。

Sub test()
Dim i As Long
i = WorksheetFunction.Substitute(ActiveSheet.Name, "月", "") * 1
ActiveSheet.Cells.Select
Selection.Copy
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Paste
ActiveSheet.Name = i + 1 & "月"
Application.CutCopyMode = False
ActiveSheet.Range("A1").Select
End Sub

こんな感じではどうでしょうか?m(__)m
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルVBAでシート名を変更する方法を教えて下さい。

いつもお世話になっています。
エクセルである月ごとの表を作っています。
1シートひと月で、翌月はそのシートをコピーして新しいシートを作り、
使用しています。

VBAでシートをコピーすることはできたのですが、
その名前を翌月にする方法がわかりません。

シート名は単純に4月分なら「4」
5月分なら「5」です。
4月のシートをコピーすると、シート名が 「4(2)」となりますが、
これを自動で「5」とするにはどうしたら良いのでしょうか?

Aベストアンサー

こんにちは。

こんなところでどうでしょうか?

全角なら、全角オプションと書いてある下のコメントブロックを外してください。

'標準モジュール
'-----------------------------
Sub CopySheets()
  Dim num As Integer
  Dim num2 As Integer
  num = Val(StrConv(ActiveSheet.Name, vbNarrow))
  On Error GoTo ErrHandler
  If num > 0 Then
    ActiveSheet.Copy After:=ActiveSheet
    num2 = num Mod 12 + 1
    ''全角オプション
    'num2 = StrConv(num2, vbWide)
    ActiveSheet.Name = CStr(num2)
  End If
  Exit Sub
ErrHandler:
  MsgBox Err.Number & " " & Err.Description
End Sub

こんにちは。

こんなところでどうでしょうか?

全角なら、全角オプションと書いてある下のコメントブロックを外してください。

'標準モジュール
'-----------------------------
Sub CopySheets()
  Dim num As Integer
  Dim num2 As Integer
  num = Val(StrConv(ActiveSheet.Name, vbNarrow))
  On Error GoTo ErrHandler
  If num > 0 Then
    ActiveSheet.Copy After:=ActiveSheet
    num2 = num Mod 12 + 1
    ''全角オプション
    'num2 = StrConv(num2...続きを読む

QVBA シート名を先月の名前にしたい

VBA シート名を先月の名前にしたい
お世話になります。

excelのシート名を、当年先月の名前(2013年4月なら”2013年3月”)にしたいのです。
当月ならうまくいくのですが、VBAでいいコーディングがあればご教示ください。
宜しくお願いします。

Aベストアンサー

> 当月ならうまくいくのですが
「どうやったか」は質問文中に書くべき

=format(Now()-day(Now()),"yyyy年m月")

QExcelでシートに年月を自動で変更するやり方

調べて似たような質問もあったのですが、希望の内容のがなかったので質問させて下さい。

Excel2010を使用しています。

Excelでシート毎に月の請求書(今年の4月~来年の3月分)を作成しています。
1年(12ヶ月分)まとめて請求する為、シート1に平成25年4月と入力したら
シート2(平成25年5月の分)~シート12(平成26年3月の分)まで『年、月』の変更を自動できる方法はありませんでしょうか?
日付は必要ないのでユーザー定義で日付を表示しないようにシート1で設定しました。

自分なりに調べてシート2の平成25年5月にする分は
=DATE(YEAR(シート1の平成25年4月の場所),MONTH(シート1の平成25年4月の場所)+2,)
にすればシート2は平成25年5月と変更できましたが、
シート3以降もやりたいのですがこのやり方ですとシート毎に
MONTHの数字を+2から+3、+4、+5、・・・・と入力を変更していかないといけないので手間がかかります。

全シートを複数選択して一度にMONTHの数値を増やして設定する方法はありませんでしょうか?
又はもっと別のわかりやすい方法などがございましたらお教え頂ければ有難いです。

ちなみにシート名は○月と登録しています。

今回の分は手打ちで入力しましたので急ぎではないです。
暇なときにでも教えて頂ければと思います。

会社で使用している為、帰宅後Excelを使用できませんので返信など遅れる場合がございます。

調べて似たような質問もあったのですが、希望の内容のがなかったので質問させて下さい。

Excel2010を使用しています。

Excelでシート毎に月の請求書(今年の4月~来年の3月分)を作成しています。
1年(12ヶ月分)まとめて請求する為、シート1に平成25年4月と入力したら
シート2(平成25年5月の分)~シート12(平成26年3月の分)まで『年、月』の変更を自動できる方法はありませんでしょうか?
日付は必要ないのでユーザー定義で日付を表示しないようにシート1で設定しました。

自分なりに調べてシート2の平成...続きを読む

Aベストアンサー

例えば各シートのA1セルにお望みの表示をさせるとしたら初めにシート見出しで4月~3月までをShiftまたはCtrlキーを押しながらクリックします。これで同じ作業グループが構成されます。
A1セルには次の式を入力します。

=IF(AND(SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"月","")*1>=4,SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"月","")*1<=12),DATE(2013,SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"月",""),1),DATE(2014,SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"月",""),1))

その後にA1セルを右クリックして「セルの書式設定」の「表示形式」の「ユーザー定義」で種類の窓には ggge"年"m"月" を入力してOKします。
その後にシート見出しで右クリックし「作業グループ解除」を選択します。

例えば各シートのA1セルにお望みの表示をさせるとしたら初めにシート見出しで4月~3月までをShiftまたはCtrlキーを押しながらクリックします。これで同じ作業グループが構成されます。
A1セルには次の式を入力します。

=IF(AND(SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"月","")*1>=4,SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)),"月","")*1<=12),DATE(2013,SUBSTITUTE(TRIM(MID(CELL("filename",A1),FIND("]",CELL("file...続きを読む

QExcelvbaでブックをコピー名前翌月に変更

Excel2013で開いているブックを丸ごとコピーして、コピーしたブックの名前の月を翌月に進めたいのですが、どうすればよいでしょうか?
現在は、とりあえず以下のような感じで一応コピーはできますが、名前は固定です。
「2014-11月.xlsm」のブックコピーのvbaを実行すると、「2014-12月.xlsm」のブックが作成され、、「2014-12月.xlsm」のブックのvba実行で、、「2015-1月.xlsm」のブックができるようにしていきたいです。

どうすれば実現できるでしょうか?

Sub ブックコピー()

ThisWorkbook.SaveCopyAs "D:\***\Desktop\サンプル\2014-12月.xlsm"

End Sub

Aベストアンサー

>追加で、もし年が変わったら、例えば来年なら「2015年」のフォルダを>
>自動で作成してそちらに保存するようにできますか?
>フォルダの作成場所は現在の一つ上の階層に作りたいです。
>現ファイルは2014年のフォルダ内に存在しています。

現在のフォルダ「2014年」と同階層に「2015年」、「2016年」・・・を作成するようにしました。

>また、すでにファイルが存在している場合は、
>警告を出して複製しないようにしたいです。

既に存在する場合は上書きの確認ではなく、処理を中止するようにしています。


■VBAコード

Sub ブックコピー()
Dim myDir_path As String, myNew_path As String
'フォルダパスとファイルパスを作成
myDir_path = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, "\") - 1)
myNew_path = Format(DateAdd("m", 1, DateValue(Replace(ThisWorkbook.Name, "月.xlsm", "-1"))), "yyyy-m") & "月.xlsm"
myDir_path = Left(myDir_path, InStrRev(myDir_path, "\")) & Left(myNew_path, 4) & "年\"
'フォルダの有無を確認、なければ作成
With CreateObject("Scripting.FileSystemObject")
  If Not .FolderExists(myDir_path) Then
    MkDir myDir_path
  End If
End With
'ファイルの有無を確認、なければ保存
If Dir(myDir_path & myNew_path) = "" Then
  ThisWorkbook.SaveCopyAs myDir_path & myNew_path
Else
  MsgBox "重複するファイルが存在します。", vbOKOnly, "保存失敗"
End If
End Sub

>追加で、もし年が変わったら、例えば来年なら「2015年」のフォルダを>
>自動で作成してそちらに保存するようにできますか?
>フォルダの作成場所は現在の一つ上の階層に作りたいです。
>現ファイルは2014年のフォルダ内に存在しています。

現在のフォルダ「2014年」と同階層に「2015年」、「2016年」・・・を作成するようにしました。

>また、すでにファイルが存在している場合は、
>警告を出して複製しないようにしたいです。

既に存在する場合は上書きの確認ではなく、処理を中止するようにしています。


■...続きを読む

Qエクセル:シート名を手入力でなく、セル「A1」の文字を出したい。

いつもお世話になります。
エクセルのシート名についての質問です。
いつもはシート名を変えるとき、シートタブの上を右クリックして「変更」しています。

◆そこで、
(1) セル「A1」に入力されてある文字を自動で出す
(2) もしくはマクロボタンを押すと「A1」に入力されてあるものが「シート名」として変わる

というようにしたいのですが、その方法について教えてください。よろしくお願いいたします。

Aベストアンサー

こんにちは。


(1)の場合は、下記のコードを ThisWorkbook に記述してください。
どのワークシートでも機能します。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value
End Sub


(2)場合は、下記のコードを標準モジュールに記述しボタンにマクロ登録してください。
(すべてのシートにボタンを貼り付けるのは面倒でしょうから、ツールバーにボタンとして追加すると良いと思います。)

Public Sub SheetName()
ActiveSheet.Name = Range("A1").Value
End Sub

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Q前月分を次月シートに繰越できるマクロについて

今Excel2003で月ごとの会員名簿を作っています。

新規でシートが作られて月名と各項目を残したまま
次月シートが作られるというマクロを是非教えていただきたいです。

その際前月の会員名だけは消えていることが望ましいのですが。。

なるべく多数の初心者でも触れるように作成後はオートシェイプか何かにマクロを登録してクリックするだけで上記の作業を行ってくれるという形にしたいと思っています。

宜しくお願い致します。

Aベストアンサー

>新規でシートが作られて月名と各項目を残したまま
と↓は矛盾しているように思います。
>次月シートが作られるというマクロを是非教えていただきたいです。

月名は翌月の月名ではなくていいのでしょうか?

シートのコピー(セルのコピーではなく)

不要なセルをクリア

この作業をマクロの自動記録してみてください。
出来たコードを改造したらお望みのことが出来ると思います。

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Q[初心者です]VBAで指定列からAを検索し、発見したら隣のセルに値0を入れるマクロ。

VBAで指定列からAを検索し、発見したら隣のセルに0を入れるマクロを組みたいのですが、組み方がVBA初心者の為わかりません。
(例)
L列に、A、B、C、D、E、Fとランダムに文字が入っていて、
文字Aを検索し、発見したら隣のI列に値0を入れるというマクロです。

Sub Search()
Dim A As String
Set A = Worksheets("Sheet1").Cells.Find("A")
If A Is Nothing Then
ActiveCell.Offset(0, 1).Value = 0

End If
End Sub
と過去の質問で考えてみたのですが、Aがあった時、、、、
とコードが書けないです。
大変困っているので、ご教授頂けないでしょうか?
出来れば、そのままマクロに出来るコードを教えて頂けないでしょうか?
宜しくお願い致します。

Aベストアンサー

こんばんは。

#3さんのおっしゃっていることも、もっともなのですが、気になる点がありましたので、自分のことを踏まえて、書かせていただきます。

いずれ、また、同じようなケースが出会うと思います。こんな原則を考えてみたらどうでしょうか?それは、私も自身も同じなのですが、ワークシートのコマンドで行われるものは、記録マクロから作ってみるということです。他にも、「統合」とか、「置換」とか「オートフィルタ」「フィルタオプション」とかは、みんなパターンが決まっています。
その中の代表格が、この「Find」 です。

>Set A = Worksheets("Sheet1").Cells.Find("A")

>過去の質問で考えてみたのです

どうも、Find メソッドは、あるレベル以下の人は、省略する傾向があるようです。何が大事で、何が大事でないかというのは、やってみなければ分かりませんが、検索語だけを入れる書き方は、実務では、あまりしないほうがよいと思います。

だいたい、以下のTestFind2 ぐらいまでに、省略は、とどめたほうがよいです。

それは、Find は、必ずしも自分が思っているデフォルトとは違うことがあるので、「明示的(意図的に)」にオプションは入れたほうがよいです。
例えば、大文字小文字の違いを付けるなら、MatchCase:=True, 数式まで探すなら、LookIn:=xlFormulas

なお、Find メソッドは、5年経っても、たぶん完全に覚えられません。面倒なコードのひとつです。ですが、これはパターンが決まっているので、ひとつパターンが決まったら、それに当てはめればよいだけです。

#3さんで示されているMougのサンプルコードと似てはいるのですが、Mougのサンプルコードでは、Verionによって、失敗することがあります。

'--------------------------------------
'記録マクロをそのまま使う方法
Sub TestFind1()
Dim c As Range
 Set c = Columns("L:L").Find(What:="A", _
           After:=ActiveCell, _
           LookIn:=xlValues, _
           LookAt:=xlPart, _
           SearchOrder:=xlByRows, _
           SearchDirection:=xlNext, _
           MatchCase:=False, _
           MatchByte:=False, _
           SearchFormat:=False)
 c.Offset(0, 1).Value = 0
End Sub
'--------------------------------------
'TestFind1 をアレンジしてみる
Sub TestFind2()
Dim c As Range
'検索語
Const MYTXT As String = "A"
 Set c = ActiveSheet.Columns("L:L").Find(What:=MYTXT, _
           LookIn:=xlValues, _
           LookAt:=xlPart, _
           MatchCase:=False)
 If Not c Is Nothing Then
    c.Offset(0, 1).Value = 0
 End If
End Sub

'---------------------------------------
'複数ある場合(パターンを使った方法)
'---------------------------------------
Sub TestFind3()
  Dim c As Range
  Dim FirstAdd As String
  Const MYTXT As String = "A"
  Set c = ActiveSheet.Columns("L:L").Find( _
    What:=MYTXT, _
    LookIn:=xlValues, _
    LookAt:=xlPart, _
    MatchCase:=False)
  
  If Not c Is Nothing Then
    FirstAdd = c.Address
    Do
      c.Offset(, 1).Value = 0
      Set c = ActiveSheet.Columns("L:L").FindNext(c)
      If c.Address = FirstAdd Then Exit Sub
    Loop Until c Is Nothing
  End If
End Sub

こんばんは。

#3さんのおっしゃっていることも、もっともなのですが、気になる点がありましたので、自分のことを踏まえて、書かせていただきます。

いずれ、また、同じようなケースが出会うと思います。こんな原則を考えてみたらどうでしょうか?それは、私も自身も同じなのですが、ワークシートのコマンドで行われるものは、記録マクロから作ってみるということです。他にも、「統合」とか、「置換」とか「オートフィルタ」「フィルタオプション」とかは、みんなパターンが決まっています。
その中の代表...続きを読む

QExcel VBAで複数シートをコピーする

Excel VBAで複数のシートを新たらしいブックにコピーする方法が分かりません。

一応、Selectで全てのシートを選択し
コピーする方法は分かるのですが
出来ればSelectなどの画面遷移をプログラム内に含ませたくありません

シートは n件存在します。
ご存知の方がおられましたら
ぜひ、教えて頂けないでしょうか?

Aベストアンサー

すいません、勉強不足でした。
ただ単純に「全てのシートを選択」し「新規ファイルにコピー」という動作であれば、
sheets.Select
sheets.Copy
だけでできました。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング