質問: excel vbaで別ファイル作成 エクセル97です。 エクセルファイル aaa.xls のすべてのワークシートのうち、セルa1に true がはいっているもの、(枚数はそのときにより不定です。)のみをコピーして、別のエクセルファイルを作成したいのです。 その際、新しいファイルに貼り付けるのは書式と値のみで、シート名は 元ファイルのシート名と同じにしたいのです。 どのようなvbaを書けばよいかご教示ください。 (aaa.xls にはワークシート以外にグラフシートやダイアローグシートが入っています。)
回答: 新規で作ってみましたのでテストしてみてください。 ただ、質問内容に書いてある、下記のことですが > (aaa.xls にはワークシート以外にグラフシートやダイアローグシートが > 入っています。) これは、入っているから、どうするということを書かないと、どうすれば いいのか分かりません。 取り敢えず、ワークシート以外は、そのままコピーするようにしました ので、不要の際は、修正してください。 else の3行を削除すればいいでしょう。たぶん。 sub test() dim newobj as workbook dim sh as integer dim shn as string dim shc as integer dim n as integer set newobj = workbooks.add application.displayalerts = false for sh = 1 to thisworkbook.sheets.count thisworkbook.activate shn = sheets(sh).name if sheets(sh).type = xlworksheet then if sheets(sh).range("a1").value = true then shc = shc + 1 sheets(sh).cells.copy if shc > newobj.sheets.count then newobj.sheets.add after:=sheets(newobj.sheets.count) end if newobj.sheets(shc).activate selection.pastespecial paste:=xlvalues selection.pastespecial paste:=xlformats for n = 1 to newobj.sheets.count if newobj.sheets(n).name = shn then newobj.sheets(n).delete exit for end if next n activesheet.name = shn activesheet.range("a1").select end if else shc = shc + 1 newobj.sheets.add after:=sheets(newobj.sheets.count) thisworkbook.sheets(sh).copy before:=newobj.sheets(shc) end if next newobj.worksheets(1).select newobj.saveas "c:\bbb.xls" newobj.close application.displayalerts = true set newobj = nothing end sub