[[20250605131500]] 『EXCELマクロの継続処理』(ひかり) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『EXCELマクロの継続処理』(ひかり)

マクロを利用しデータシートを多層階のフォルダに自動保存する業務効率化を検討しています。

マクロ実行ボタンを配置したワークシートに、データ入力と多層階のフォルダ/ファイル名を入力した後、保存ボタンを押すことにより、1マクロボタンを消去 2ファイル名の重複確認→重複があれば自動で連番付与 3xlsx形式で保存 4マクロ実行ファイルを閉じる するマクロを作成できました。

スポットで処理する場合、作成したマクロで問題はないのですが、継続でマクロ処理する時は閉じたマクロ実行ファイルを一々開いて処理しないといけないので手間が掛かります。

すなわち、データ入力し、前述の1〜3を処理した後、次のデータを入力可能(前のデータ入力が残っている方がベスト)なマクロを作成したい(当然ながら、上記保存ボタンと別のボタンを作成します)のですが、良いアイデアが浮かびません。
お知恵を頂きたくよろしくお願いいたします。

< 使用 Excel:unknown、使用 OS:unknown >


 >マクロ実行ファイルを閉じる

 閉じなきゃいいのでは
(なんとなく) 2025/06/05(木) 14:45:35

 >Excel:unknown
 バージョンによってできることが違うのでね、バージョンは書いてほしいですが。

 私なら
 ThisWorkbook.SaveCopyAs "ほにゃらら.xlsx"
 をリボンに登録。
(´・ω・`) 2025/06/05(木) 15:15:54

マクロを個人用マクロブックとかに書いておけばいいと思うけど
(マクロと実行ブックを切り離す)
それに対応したマクロが書けるのかが疑問
(なんとなく) 2025/06/05(木) 16:27:56

 実行ブックと保存ブックを別にすればいいだけ

 実行ブックを原本的な扱いにして、データを更新した後に
 必要なシートをコピーして新規ブックとして保存する
(FL) 2025/06/06(金) 07:32:47

ご回答ありがとうございます。作成した実行ブックは原本としてサーバー内におき、メンバーが自分用のフォルダにファイルをコピーして運用することなります。
従って、実行ブックは別として保存ブックは一時ファイルとしてデータを保存した後、削除したいと考えます。

1つのブック内で完結できないかと以下を試したのですが、残念ながら解決しませんでした。
?@マクロ実行シートをそのブックにシートコピー ?A貼り付けたシートのマクロを実行し、データ保存 ?Bデータ保存後、貼り付けたシートを削除 ?C元のマクロ実行シートに戻るようにマクロを組んでみたのですが、うまくいかない状況です。

もう少し時間をかけて考えますが、引き続きお知恵をお借りします。

(ひかり) 2025/06/06(金) 16:28:59


まだよくわかってませんが、そのマクロはどこに書いてあったんですか?
まずはその辺の思い違いでは?
マクロ実行ボタンがどんな種類のボタンなのか?
とかも必要かと

(たぶん) 2025/06/06(金) 16:39:16


こんにちわ。。。すでに多数ご案内があったようですが(*^^*)

1.マクロブックのシートをコピーすればブックができます
2..マクロブックから必要な操作を施す
3.最後にボタンからマクロブック終了

とかでは だめですか   ^^;
的外れでしたらご勘弁をm(__)m

(隠居Z) 2025/06/06(金) 16:48:22


 >マクロを組んでみたのですが、うまくいかない状況です。
 そのマクロを開示して添削してもらってください。

 自分のコードをそんなに隠したいですか?
(´・ω・`) 2025/06/06(金) 16:48:48

 全くコードの開示が行われず話が進んでないので
 勝手に叩き台を作成しました

 皆さんが言っているのはこういうことです。
 ※その他のシートに対する処理は適宜追加する必要があり

 Sub sample()
     Dim wb As Workbook
     Set wb = Workbooks.Add

     Dim folder As String, file As String, fpath As String
     Dim i As Long, cnt As Long
     Dim shp As Shape
     Dim sh As Worksheet

     With ThisWorkbook.Sheets("コピーしたいシート")
         folder = .Cells(1, 1).Value
         file = .Cells(1, 2).Value
         If Right(folder, 1) <> "\" Then folder = folder & "\"
         fpath = folder & file & ".xlsx"
         .Copy After:=wb.Sheets(wb.Sheets.Count)
     End With

     Set sh = wb.Sheets(wb.Sheets.Count)

     For i = sh.Shapes.Count To 1 Step -1
         sh.Shapes(i).Delete
     Next i

     ‘shに対するその他の処理

     cnt = 1
     Do While Dir(fpath) <> ""
         fpath = folder & file & "_" & cnt & ".xlsx"
         cnt = cnt + 1
     Loop

     Application.DisplayAlerts = False
     wb.Sheets(1).Delete
     Application.DisplayAlerts = True

     wb.SaveAs fpath
     wb.Close False

 End Sub
(FL) 2025/06/06(金) 19:22:30

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.