重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

 VBを記述した親ワークブックから子ワークブックを作成したいのですが、下記コードでは次の障害があるのです。

1.2003バージョンでは開けない。
2.2007バージョンで開こうとすると、メッセージが出る。
  「~ファイル拡張子が示す形式と異なります。~」
3.不要なワークシートが残る。
  “基本設定/新しいブックの作成/ブックのシート数”に依存している。

【シートを1枚だけにし、2003バージョンで保存したいのです。】

ShName = ThisWorkbook.ActiveSheet.Name

Set objWorkBook = Workbooks.Add
objWorkBook.ActiveSheet.Name = "○○商事"

Call 処理

Set WSH = CreateObject("Wscript.Shell")
Path = WSH.SpecialFolders("Desktop") & "\"

On Error Resume Next '上書き保存をキャンセルした時の取り合えずの回避策(宿題(^^;))
ActiveWorkbook.SaveAs Path & "○○系_" & ShName & ".xls"

Set WSH = Nothing
Set objWorkBook = Nothing

 新しいブックを作成後、シート数を数えて2枚目以降を消すのも出来るかと思いますが、作成時には既に1枚、しかも2003バージョンで作成する事は可能なのでしょうか?

 皆様、よろしく御教示下さいませ・・・。

A 回答 (1件)

こんにちは。


3行追加、1行変更(書き足し)です。
.SaveAs メソッド については、一応、VBAヘルプ目を通しておいてください。

///

  'Dim nShInNWB As Long ' ●
  ' ' 新しいブックを開いた時のシート数
  ' ' 後で元に戻す為に変数に記録
  nShInNWB = Application.SheetsInNewWorkbook ' ●
  ' ' 新しいブックを開いた時のシート数を指定
  Application.SheetsInNewWorkbook = 1 ' ●
ShName = ThisWorkbook.ActiveSheet.Name
Set objWorkBook = Workbooks.Add
objWorkBook.ActiveSheet.Name = "○○商事"
Call 処理
Set WSH = CreateObject("Wscript.Shell")
Path = WSH.SpecialFolders("Desktop") & "\"
''On Error Resume Next '上書き保存をキャンセルした時の取り合えずの回避策(宿題(^^;))
''ActiveWorkbook.SaveAs Path & "○○系_" & ShName & ".xls"
  ' ' Excel2003互換、.xlsで"名前を付けて保存"
  objWorkBook.SaveAs Filename:=Path & "○○系_" & ShName & ".xls", FileFormat:=xlExcel8 ' ●
  ' ' 新しいブックを開いた時のシート数を元に戻す
  Application.SheetsInNewWorkbook = nShInNWB ' ●
Set WSH = Nothing
Set objWorkBook = Nothing

///


以上です。
    • good
    • 0
この回答へのお礼

こんばんわ♪
早速のご回答ありがとうございます♪
動作良好でございます。

追加して頂いた所は、全くの勉強不足でした。どの様に調べればたどり着けるやらも・・・

SaveAsは一応見ていたのですが、、、ファイルフォーマットが選べるとわOrz

お礼日時:2013/05/17 23:02

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