Excel VBA質問箱 IV

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

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


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

【75075】シート別にコピー yui 13/12/9(月) 9:35 質問[未読]
【75076】Re:シート別にコピー AceNumber 13/12/9(月) 10:39 回答[未読]
【75077】Re:シート別にコピー yui 13/12/9(月) 10:53 質問[未読]
【75078】Re:シート別にコピー AceNumber 13/12/9(月) 11:08 回答[未読]
【75079】Re:シート別にコピー yui 13/12/9(月) 11:27 お礼[未読]

【75075】シート別にコピー
質問  yui  - 13/12/9(月) 9:35 -

引用なし
パスワード
   エクセル マクロ

マクロ初心者です。

一つのファイルにシートごとに個人の情報が入っています。
それをシートごとに一つのブックとして保存していきたいのですが、なかなか上手くいきません‥

Sub 個別に保存()

Dim sh As Worksheet
Dim str As String

For Each sh In Worksheets

'シート名取得
str = sh.Name

'シートを違うファイルにコピー

ActiveSheet.Select
ActiveSheet.Copy

'保存処理

ActiveWorkbook.SaveAs Filename:= _
"C:\" _
& str & ".xls"

Next sh


End Sub

これだと、ファイルが開いたままになるし、いらないシートまでコピーしちゃいます。
コピーしたいシートはSHEET1〜13のSHEET4からです。
保存先を指名したいのと保存名にそれぞれのシート名とその月を入れたいです。
例えば‥シート名(12月)

仕事で使うので、どうかお力添えをお願い致します。

【75076】Re:シート別にコピー
回答  AceNumber  - 13/12/9(月) 10:39 -

引用なし
パスワード
   ▼yui さん:
> コピーしたいシートはSHEET1〜13のSHEET4からです。
> 保存先を指名したいのと保存名にそれぞれのシート名とその月を入れたいです。
> 例えば‥シート名(12月)

こんにちは

保存対象シートが左から4番目以降として、下記で如何でしょうか。

Dim ws   As Worksheet

  For Each ws In ThisWorkbook.Sheets
    If ws.Index > 3 Then
      ws.Copy
      ActiveWorkbook.SaveAs "C:\" & ws.Name & Format(Now(), "(m月)") & ".xls", xlExcel8
      ActiveWorkbook.Close
    End If
  Next ws

End Sub

拡張子が".xls"でしたので、SaveAsにxlExcel8を付けていますが、
環境がExcel2003以前でしたら不要です。

【75077】Re:シート別にコピー
質問  yui  - 13/12/9(月) 10:53 -

引用なし
パスワード
   ありがとうございます!!
ちゃんと発動してくれました!!

もう一つ‥保存先を指定したいのですが、どこを変更すればよいでしょうか‥??

【75078】Re:シート別にコピー
回答  AceNumber  - 13/12/9(月) 11:08 -

引用なし
パスワード
   ▼yui さん:
>ありがとうございます!!
>ちゃんと発動してくれました!!
>
>もう一つ‥保存先を指定したいのですが、どこを変更すればよいでしょうか‥??

それであれば、保存先を指定できるようにダイアログを出すことができます。

Sub Sample2()

Dim ws   As Worksheet
Dim strPath As String

  '保存先を選択するダイアログ
  If Application.FileDialog(msoFileDialogFolderPicker).Show Then
    strPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
  End If

  For Each ws In ThisWorkbook.Sheets
    If ws.Index > 3 Then
      ws.Copy
      Application.DisplayAlerts = False
      ActiveWorkbook.SaveAs strPath & "\" & ws.Name & Format(Now(), "(m月)") & ".xls", xlExcel8
      ActiveWorkbook.Close
      Application.DisplayAlerts = True
    End If
  Next ws

End Sub

【75079】Re:シート別にコピー
お礼  yui  - 13/12/9(月) 11:27 -

引用なし
パスワード
   上手くできました。
大変ありがとうございました!

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