いつもお世話になっております。
下記のコードは
各シートをそれぞれ別のに
保存するコードを検索して見つけましたが
エラーになります。
一度上手くいきましたがそれ以降
上手くいきません。
わかる方おしえてくれませんでしょうか
DDのシートはダミーです。
Sheet1
Sheet2
Sheet3
があります。
Sub sheets_save()
For Each shs In Worksheets
If shs.Name <> "DD" Then
shs.Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & " \" & shs.Name
ActiveWorkbook.Close
End If
Next shs
End Sub
No.5ベストアンサー
- 回答日時:
#3#4です
ちゃんと確認せずに、いい加減な回答をしてしまいました。
shs.Name = shs.Name & "(" & n & ")"
シート名を変更してしまいました。。。これはまずいです。
大変申し訳ありませんが、訂正したものを投稿します
Sub sheets_save()
Dim shs As Worksheet, n As Integer
Dim BN As String
For Each shs In Worksheets
If shs.Name <> "DD" Then
shs.Copy
If Dir(ThisWorkbook.Path & "\" & shs.Name & ".xlsx") <> "" Then
' MsgBox "同名のブックが存在するので枝番を付加します"
plsNumber:
n = n + 1
BN = "(" & n & ")"
If Dir(ThisWorkbook.Path & "\" & shs.Name & BN & ".xlsx") <> "" Then GoTo plsNumber
End If
n = 0
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & shs.Name & BN
ActiveWorkbook.Close
End If
BN = ""
Next shs
End Sub
いつもお世話になっております。
うまくいきました。
plsNumber:
n = n + 1
BN = "(" & n & ")" 初めてみます。調べてみます。
ありがとうございました。
No.4
- 回答日時:
間違え
If Dir(ThisWorkbook.Path & "\" & shs.Name) <> "" Then GoTo plsNumber
訂正
If Dir(ThisWorkbook.Path & "\" & shs.Name & ".xlsx") <> "" Then GoTo plsNum
No.3
- 回答日時:
こんばんは、
上手くいかないとは、同名ファイルがあるからと言う事でしょうか?
もしそうであるなら、ファイルの存在を確認して処理を分ける方法を考えてみては、
参考
Sub sheets_save()
Dim shs As Worksheet, n As Integer
For Each shs In Worksheets
If shs.Name <> "DD" Then
shs.Copy
If Dir(ThisWorkbook.Path & "\" & shs.Name & ".xlsx") <> "" Then
MsgBox "同名のブックが存在するので枝番を付加します"
plsNumber:
n = n + 1
shs.Name = shs.Name & "(" & n & ")"
If Dir(ThisWorkbook.Path & "\" & shs.Name) <> "" Then GoTo plsNumber
End If
n = 0
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & shs.Name
ActiveWorkbook.Close
End If
Next shs
End Sub
それと、¥の前の半角スペース タイプミスですよね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
- Visual Basic(VBA) でシートをコピーしたときに 見えないようにする方法 1 2022/04/10 20:27
- Excel(エクセル) vbaで列幅について 1 2022/11/15 08:31
- Visual Basic(VBA) userformでSheetを選択して開くコード 1 2023/05/15 16:27
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
ワイルドカード「*」を使うとう...
-
エクセルVBAが途中で止まります
-
vbaで他のブックに転記したい。...
-
別ブックをダイアログボックス...
-
ACCESSでExcelにデータ出力、高...
-
VBS Bookを閉じるコード
-
VBA コードを実行すると画面が...
-
転記先VBA 一致しているセルが...
-
vbaでvbaProjectのパスワード解...
-
VBAで別ブックのシートを指定し...
-
エクセルのマクロについて教え...
-
VBA 実行時エラー 2147024893
-
ExcelVBA:すでに開かれている...
-
【Excel VBA】書き込み先ブック...
-
【ExcelVBA】インデックスが有...
-
【ご教示ください】VBAの記述方...
-
ADOで複数のBookから抽出
-
ACCESSVBA からExcelの他ブック...
-
【ExcelVBA】zip圧縮されたCSV...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
別ブックをダイアログボックス...
-
【ExcelVBA】インデックスが有...
-
ワイルドカード「*」を使うとう...
-
【ExcelVBA】VBA実行でダイアロ...
-
ExcelのVBAです。フォルダ内の...
-
フォルダ内の全てのファイルに...
-
VBA コードを実行すると画面が...
-
VBA 別ブックからコピペしたい...
-
VBAで別ブックのシートを指定し...
-
VBS Bookを閉じるコード
-
vbaでvbaProjectのパスワード解...
-
【VBA】全シートの計算式を全て...
-
VBA シート名が一致した場合の...
-
【ExcelVBA】zip圧縮されたCSV...
-
複数のエクセルブックをひとつ...
-
VBSでExcelのオープン確認
-
VBAで別のブックにシートをコピ...
-
【Excel VBA】書き込み先ブック...
おすすめ情報