Excel VBA質問箱 IV

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

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


7137 / 13646 ツリー ←次へ | 前へ→

【40935】シートの名前別にブックで保存する トホホ 06/7/26(水) 15:53 質問[未読]
【40940】Re:シートの名前別にブックで保存する へっぽこ 06/7/26(水) 16:25 発言[未読]
【40942】Re:シートの名前別にブックで保存する Kein 06/7/26(水) 16:44 回答[未読]
【40943】Re:シートの名前別にブックで保存する Kein 06/7/26(水) 16:46 回答[未読]
【40972】Re:シートの名前別にブックで保存する トホホ 06/7/27(木) 9:25 質問[未読]
【40984】Re:シートの名前別にブックで保存する KAZU 06/7/27(木) 12:17 発言[未読]
【40985】Re:シートの名前別にブックで保存する Kein 06/7/27(木) 12:42 回答[未読]
【40986】Re:シートの名前別にブックで保存する トホホ 06/7/27(木) 12:48 お礼[未読]

【40935】シートの名前別にブックで保存する
質問  トホホ  - 06/7/26(水) 15:53 -

引用なし
パスワード
   13枚のSheetからなるブック上での操作です。
13枚のSheetのうち6枚のSheetだけをシート名別でブックに保存したいのですが、
今ひとつ記述がわかりません。
下記のように書いても全部保存されてしまいます。6枚のシートだけを保存したいのですが。教えてください。

Sheetあをコピーして「Sheetあ.xls」で保存
Sheetかをコピーして「Sheetか.xls」で保存
Sheetさをコピーして「Sheetさ.xls」で保存
Sheetたをコピーして「Sheetた.xls」で保存
Sheetなをコピーして「Sheetな.xls」で保存
Sheetはをコピーして「Sheetは.xls」で保存


Sub Sheet名で保存()
 Dim strName As String
 Dim Wst As Worksheet
 On Error Resume Next
 Application.ScreenUpdating = False
 For Each Wst In ActiveWindow.SelectedSheets
 strName = Wst.Name
 Wst.Copy
 With ActiveWorkbook
 .SaveAs "D:\見込み\集計DB\国内\DB\" & strName & ".xls"   .Close SaveChanges:=True          
 End With                 
 Next Wst                     
 Application.ScreenUpdating = True
 Application.DisplayAlerts = False
 ActiveWindow.Close
End Sub

【40940】Re:シートの名前別にブックで保存する
発言  へっぽこ  - 06/7/26(水) 16:25 -

引用なし
パスワード
   こんにちは。

ちゃんと動いているように思えるのですが?

> 6枚のSheetだけをシート名別でブックに保存したいのですが

マクロを見ると「選択してあるシートが処理対象」となってますが
実はそこが違うのでしょうか?

【40942】Re:シートの名前別にブックで保存する
回答  Kein  - 06/7/26(水) 16:44 -

引用なし
パスワード
   Sub Sheet名で保存()
  Dim Ary As Variant
  Dim i As Integer
  Dim Fname As String
  Const Fol As String = "D:\見込み\集計DB\国内\DB\"

  Ary = Array("あ", "か", "た", "な", "は")
  Application.ScreenUpdating = False
  On Error Resume Next
  For i = 0 To 4
   Fname = "Sheet" & Ary(i)
   If Dir(Fol & Fname) <> "" Then Kill Fol & Fname
   Sheets(Fname).Copy
   ActiveWorkbook.Close True, Fol & Fname
   If Err.Number <> 0 Then Err.Clear
  Next i
  On Error GoTo 0
  Application.ScreenUpdating = True
  MsgBox "ファイル作成を終了しました", 64
End Sub

で、どうでしょーか ?

【40943】Re:シートの名前別にブックで保存する
回答  Kein  - 06/7/26(水) 16:46 -

引用なし
パスワード
   ん、"さ"行が抜けてましたね。失礼。

Sub Sheet名で保存()
  Dim Ary As Variant
  Dim i As Integer
  Dim Fname As String
  Const Fol As String = "D:\見込み\集計DB\国内\DB\"

  Ary = Array("あ", "か", "さ", "た", "な", "は")
  Application.ScreenUpdating = False
  On Error Resume Next
  For i = 0 To 5
   Fname = "Sheet" & Ary(i)
   If Dir(Fol & Fname) <> "" Then Kill Fol & Fname
   Sheets(Fname).Copy
   ActiveWorkbook.Close True, Fol & Fname
   If Err.Number <> 0 Then Err.Clear
  Next i
  On Error GoTo 0
  Application.ScreenUpdating = True
  MsgBox "ファイル作成を終了しました", 64
End Sub

で、やってみて下さい。

【40972】Re:シートの名前別にブックで保存する
質問  トホホ  - 06/7/27(木) 9:25 -

引用なし
パスワード
   ありがとうございます。
実行してみたところアクティブシートのみの保存になってしまいました。
またファイル名が「Sheetあ」「Sheetか」・・・のようになりました。
6枚のシートを保存しようと思えば、どうしたらよいのでしょうか?

【40984】Re:シートの名前別にブックで保存する
発言  KAZU  - 06/7/27(木) 12:17 -

引用なし
パスワード
   Keinさんのソースで
 
Fname = "Sheet" & Ary(i)
とあると思います。

Sheetあ,Sheetか・・・・・というシート名をターゲットに処理しています。

シート名が
あ,か,さ,た,な・・・・
という名前であれば、
Fname = "Sheet" & Ary(i) という部分を
Fname = Ary(i)

に変更して実行してみて下さい。

【40985】Re:シートの名前別にブックで保存する
回答  Kein  - 06/7/27(木) 12:42 -

引用なし
パスワード
   シート名は "Sheetあ" などでなく、"あ"だけだったのでしょーか ?
そういうところは、誰にでもはっきり分かるように書いて下さい。
で、コードを修正すると

Sub Sheet名で保存()
  Dim Ary As Variant
  Dim i As Integer
  Dim Fname As String
  Const Fol As String = "D:\見込み\集計DB\国内\DB\"

  Ary = Array("あ", "か", "さ", "た", "な", "は")
  Application.ScreenUpdating = False
  On Error Resume Next
  For i = 0 To 5
   Fname = Fol & "Sheet" & Ary(i)
   If Dir(Fname) <> "" Then Kill Fname
   Sheets(Ary(i)).Copy
   ActiveWorkbook.Close True, Fname
   If Err.Number <> 0 Then Err.Clear
  Next i
  On Error GoTo 0
  Application.ScreenUpdating = True
  MsgBox "ファイル作成を終了しました", 64
End Sub

ということになります。
作成するブック名の方は "Sheetあ.xls" と、なります。

【40986】Re:シートの名前別にブックで保存する
お礼  トホホ  - 06/7/27(木) 12:48 -

引用なし
パスワード
   どうも大変失礼をいたしまして申し訳ございません。
厳しいですねぇ〜(汗)
鍛えられます。
VBAの方も(*^_^*)

ありがとうございました。
今実行してみたら上手くいきました。
まだまだ勉強が必要なようです。

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