Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7641 / 13644 ツリー ←次へ | 前へ→

【37767】ブック名の変更 美貴 06/5/18(木) 14:47 質問[未読]
【37768】Re:ブック名の変更 ぱっせんじゃー 06/5/18(木) 14:54 発言[未読]
【37772】Re:ブック名の変更 美貴 06/5/18(木) 15:53 質問[未読]
【37780】Re:ブック名の変更 ハチ 06/5/18(木) 17:03 発言[未読]
【37782】Re:ブック名の変更 美貴 06/5/18(木) 17:39 質問[未読]
【37787】Re:ブック名の変更 ハチ 06/5/18(木) 18:18 発言[未読]
【37803】Re:ブック名の変更 Kein 06/5/18(木) 22:24 回答[未読]
【37815】Re:ブック名の変更 美貴 06/5/19(金) 10:44 お礼[未読]

【37767】ブック名の変更
質問  美貴  - 06/5/18(木) 14:47 -

引用なし
パスワード
   こんにちはー
久しぶりの質問です。
新規にブックを作成すると、勝手に"Book1.xls"とかの
名前になってしまいますが、この名前を任意の名前に
するにはどうしたらいいのでしょうか?
但し、物理ファイルとしてsaveしない状態で、です。
みなさま、よろしくお願い致します。

【37768】Re:ブック名の変更
発言  ぱっせんじゃー  - 06/5/18(木) 14:54 -

引用なし
パスワード
   一度保存しないと無理だと思います。

なぜそんなことがしたいかを書かれたら
代案が出されると思います。

【37772】Re:ブック名の変更
質問  美貴  - 06/5/18(木) 15:53 -

引用なし
パスワード
   ▼ぱっせんじゃー さん:
>一度保存しないと無理だと思います。
>
>なぜそんなことがしたいかを書かれたら
>代案が出されると思います。

アドバイス、ありがとうございます。(^^♪

アクティブなブックの特定のシートを選択しておいて
それを別の新規ブックに抜き出しコピーするマクロを
作成しました。
社内で他の人に資料を渡すときに、必要なシートのみを
選んで1つのブックにしたいためです。
このときのブック名は、選択したシートの1番目の名前と同じにしたい
ことが多いので、この名前をデフォルトにしたいんです。
でも、保存までしてしまうと、自分が置きたいフォルダじゃ
なかったりするので、それは避けたいんです。
以下は、私が書いたコードです。

Sub シートの抜き出しコピー()
元ファイル = ActiveWorkbook.Name
Workbooks.add Template:="ブック"
ファイル1 = ActiveWorkbook.Name
  Windows(元ファイル).Activate
SheetsC = 0
For Each ws In ActiveWindow.SelectedSheets '選択中のシート
  Windows(元ファイル).Activate
  Sheets(ws.Name).Select
  SheetsC = SheetsC + 1
  Application.DisplayAlerts = False
  Sheets(ws.Name).Copy After:=Workbooks(ファイル1).Sheets(SheetsC)
  Application.DisplayAlerts = True
  If SheetsC = 1 Then sheetname = ws.Name 
Next
  Sheets("Sheet1").Select
  Application.DisplayAlerts = False
  ActiveWindow.SelectedSheets.Delete
  Application.DisplayAlerts = True
End Sub

ご教示、よろしくお願い致します♪

【37780】Re:ブック名の変更
発言  ハチ  - 06/5/18(木) 17:03 -

引用なし
パスワード
   ▼美貴 さん:

変数はきっちり、宣言したほうが良いと思います。
なにを指してるのかわかりづらいです。

こんな感じですか?
ActiveWindow.SelectedSheets って初めて使ってみました。
便利ですね^^
下のほうはコメントアウトしてます。

Sub Test()

Dim Oldwb, Newwb As Workbook
Set Oldwb = ActiveWorkbook
Set Newwb = Workbooks.Add(xlWBATWorksheet)

Newwb.Worksheets(1).Name = "TMP"
Oldwb.Activate
ActiveWindow.SelectedSheets.Copy After:=Newwb.Worksheets(1)
Application.DisplayAlerts = False
  Newwb.Worksheets(1).Delete
Application.DisplayAlerts = True
'右端のSheetの名前をつけて保存しない?
'Newwb.SaveAs ThisWorkbook.Path & "\" & Newwb.Worksheets(1).Name & ".xls"
'閉じない?
'Newwb.Close

Set Oldwb = Nothing
Set Newwb = Nothing

End Sub

【37782】Re:ブック名の変更
質問  美貴  - 06/5/18(木) 17:39 -

引用なし
パスワード
   ▼ハチ さん:
>
>変数はきっちり、宣言したほうが良いと思います。
>なにを指してるのかわかりづらいです。

はーい、気をつけます!!
ごめんなさい。あせあせ^^;

>
>こんな感じですか?
>ActiveWindow.SelectedSheets って初めて使ってみました。
>便利ですね^^
>下のほうはコメントアウトしてます。

しかし、ずいぶんとシンプルになるものなんですね?
す・ご・い♪
ありがとうございます。

さて、
>'Newwb.SaveAs ThisWorkbook.Path & "\" & Newwb.Worksheets(1).Name & ".xls"
なんですけど、私の目論見としては、ファイル保存してしまう前に
フォルダをダイアログボックスから任意に指定したいんですよ。
または、保存しない状態でブック名だけをリネームしたいです。
無理なんでしょうか?
どうぞ、よろしくお願い致します。

>
>Sub Test()
>
>Dim Oldwb, Newwb As Workbook
>Set Oldwb = ActiveWorkbook
>Set Newwb = Workbooks.Add(xlWBATWorksheet)
>
>Newwb.Worksheets(1).Name = "TMP"
>Oldwb.Activate
>ActiveWindow.SelectedSheets.Copy After:=Newwb.Worksheets(1)
>Application.DisplayAlerts = False
>  Newwb.Worksheets(1).Delete
>Application.DisplayAlerts = True
>'右端のSheetの名前をつけて保存しない?
>'Newwb.SaveAs ThisWorkbook.Path & "\" & Newwb.Worksheets(1).Name & ".xls"
>'閉じない?
>'Newwb.Close
>
>Set Oldwb = Nothing
>Set Newwb = Nothing
>
>End Sub

【37787】Re:ブック名の変更
発言  ハチ  - 06/5/18(木) 18:18 -

引用なし
パスワード
   ▼美貴 さん:

>なんですけど、私の目論見としては、ファイル保存してしまう前に
>フォルダをダイアログボックスから任意に指定したいんですよ。
>または、保存しない状態でブック名だけをリネームしたいです。
>無理なんでしょうか?
>どうぞ、よろしくお願い致します。

保存しないでリネームはムリだと思います。
ダイアログボックスのデフォルトにSheet名.xlsを表示したいなら
自作するしかないかも・・

Sub Test2()

Dim Oldwb, Newwb As Workbook
Dim SaveName As Variant
Set Oldwb = ActiveWorkbook
Set Newwb = Workbooks.Add(xlWBATWorksheet)

Newwb.Worksheets(1).Name = "TMP"
Oldwb.Activate
ActiveWindow.SelectedSheets.Copy After:=Newwb.Worksheets(1)
Application.DisplayAlerts = False
  Newwb.Worksheets(1).Delete
Application.DisplayAlerts = True

SaveName = Application.GetSaveAsFilename( _
InitialFilename:=Newwb.Worksheets(1).Name & ".xls", _
Title:="Sheet名で保存")

If SaveName <> False Then
  Newwb.SaveAs SaveName
  Newwb.Close
End If

Set Oldwb = Nothing
Set Newwb = Nothing

End Sub

【37803】Re:ブック名の変更
回答  Kein  - 06/5/18(木) 22:24 -

引用なし
パスワード
   これぐらいシンプルなコードでも、出来ると思います。

Sub Sample1()
  Dim Fnm As String, Svn As String

  With ActiveWindow.SelectedSheets
   Fnm = .Item(1).Name & ".xls"
   .Copy
  End With
  Svn = Application _
  .GetSaveAsFilename(Fnm, "エクセルブック(*.xls),*.xls")
  If Svn <> "False" Then ActiveWorkbook.Close True, Svn
End Sub

【37815】Re:ブック名の変更
お礼  美貴  - 06/5/19(金) 10:44 -

引用なし
パスワード
   ▼Kein さん、ぱっせんじゃーさん
できましたぁー
すごいですね!!
どうもありがとうございましたぁー(^^♪

7641 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free