Excel VBA質問箱 IV

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

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


179 / 13645 ツリー ←次へ | 前へ→

【81653】複数のシートを分割し、保存 はな 21/2/11(木) 13:53 質問[未読]
【81654】Re:複数のシートを分割し、保存 OK 21/2/11(木) 14:09 発言[未読]
【81655】Re:複数のシートを分割し、保存 OK 21/2/11(木) 14:13 発言[未読]
【81656】Re:複数のシートを分割し、保存 OK 21/2/11(木) 14:18 発言[未読]
【81657】Re:複数のシートを分割し、保存 OK 21/2/11(木) 16:17 発言[未読]
【81658】Re:複数のシートを分割し、保存 OK 21/2/11(木) 16:24 発言[未読]
【81659】Re:複数のシートを分割し、保存 γ 21/2/12(金) 19:36 発言[未読]

【81653】複数のシートを分割し、保存
質問  はな  - 21/2/11(木) 13:53 -

引用なし
パスワード
   テンプレ(sheet1)と、リスト一覧(sheet2)以外は、取引先の会社名がシート名になったエクセルファイルがあります。

テンプレと、リスト一覧以外を分割して、一枚ずつに保存(保存名はシート名)して、同じ保存先に格納したいのですが、テンプレとリスト一覧のシート2枚を除いてという設定がうまくいきません。

テンプレのみ、またはリスト一覧のみを除いてだけだったらいけるのですが、、、

以下、ご教示ください。

Sub sheets_save()
For Each シート In Worksheets
If シート.Name <> "テンプレ" Then
シート.Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & シート.Name
ActiveWorkbook.Close
End If
Next シート
End Sub

【81654】Re:複数のシートを分割し、保存
発言  OK  - 21/2/11(木) 14:09 -

引用なし
パスワード
   >If シート.Name <> "テンプレ" Then

And を使います。

If シート.Name <> "テンプレ" And シート.Name <> "シート一覧" Then

【81655】Re:複数のシートを分割し、保存
発言  OK  - 21/2/11(木) 14:13 -

引用なし
パスワード
   参考過去HPです。

ht tps://www.sejuku.net/blog/30059

【81656】Re:複数のシートを分割し、保存
発言  OK  - 21/2/11(木) 14:18 -

引用なし
パスワード
   今後の参考に。

Dictionaryオブジェクトを使って、Dictionary
に格納されているか否かで判定する、という方法
もあります。

【81657】Re:複数のシートを分割し、保存
発言  OK  - 21/2/11(木) 16:17 -

引用なし
パスワード
   Dictionaryオブジェクトを使用した例です。

Sub sheets_save2()
Dim jogaidic As Object

 Set jogaidic = CreateObject("Scripting.Dictionary")

'Dictionaryに追加
 jogaidic.Add "テンプレ", "テンプレ"
 jogaidic.Add "シート一覧", "シート一覧"
 For Each シート In Worksheets

  ''シート名がDictionaryに登録されたものの中に含まれてなかったら
  If Not jogaidic.exists(シート.Name) Then '
   シート.Copy
   ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & シート.Name
  ActiveWorkbook.Close
  End If
 Next シート

 jogaidic.RemoveAll
 Set jogaidic = Nothing
End Sub

【81658】Re:複数のシートを分割し、保存
発言  OK  - 21/2/11(木) 16:24 -

引用なし
パスワード
   ↑のコードの
"シート一覧"は "リスト一覧"と読み替えてください。

【81659】Re:複数のシートを分割し、保存
発言  γ  - 21/2/12(金) 19:36 -

引用なし
パスワード
   別の方法の紹介です。参考まで。

特別の二つのシートを最初に(一番左に)寄せて置き、
Sub test()
  For k = 3 To Worksheets.Count
    Set ws = Worksheets(k)
    
    ' wsに対して処理する
  Next
End Sub
こんな風にすることもありますね。

うっかり順序を変えるといけないですが。
もし自分だけがユーザーで、それを承知していれば、
ならこんな方法もとれるでしょう。

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