『別名保存したファイルの操作と元ファイルの操作について』(とらじま)
元ファイル(ファイルA)にて、データを取込み加工し、別名保存(ファイルB)します。ファイルBの不要なシート等を削除し、上書き保存してファイルを閉じます。同じ作業を繰り返すので、ファイルAは開いたままにします。
ファイルAの構成
シート:sheet1,sheet2,sheet3,sheet4,sheet5
標準モジュール:Module1,Module2,Module3
ユーザーフォーム:form1
ファイルBの構成
シート:sheet1,sheet2
標準モジュール:Module1
ユーザーフォーム:form1
新規ブックを追加し、必要なシート等のみをコピーして保存しようと思ったのですが、ユーザーフォームの複製ができないので、全部複製して、不要なシート等を削除する方法を選択しました。
<データの加工後から記述>
ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "ファイルB.xlsm"
With ActiveWorkbook .Names("現場名").Delete '名前の定義削除 .Worksheets(Array("sheet3", "sheet4", "sheet5")).Delete .Worksheets(Array("sheet4", "sheet5")).Visible = False '非表示 .Application.VBE.ActiveVBProject.VBComponents.Remove _ Application.VBE.ActiveVBProject.VBComponents("Module2") .Application.VBE.ActiveVBProject.VBComponents.Remove _ Application.VBE.ActiveVBProject.VBComponents("Module3") End With
<上書きして、ファイルAにて操作の続きをしたい>
※上記コードは、Module2 に記載しています。
ファイルBを上書きして閉じたいのですが、コードで【Save】・【Close】を
記述すると、Module2・3の削除ができません。
ファイルAが勝手に閉じてしまい、ファイルBのコードで動いているので、
モジュールの削除ができないようです。
コードで【Save】・【Close】を記述せず、手動で上書き保存すると、
Module2・3の削除までできますが、ファイルAは同じく勝手に閉じてしまい、
空のEXCELが残った状態になります。
ファイルBの不要なシート等を削除し、手動ではなくコードで上書き保存してファイルを閉じ、ファイルAを開いたままにするにはどうしたら良いでしょうか?
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
詳細を読んでいませんが、SaveCopyAsを使う局面のように思います。 これであればファイルAには影響が及びません。 当方の勘違いであれば無視ください。
(xyz) 2024/04/26(金) 17:50:21
>.Worksheets(Array("sheet3", "sheet4", "sheet5")).Delete >.Worksheets(Array("sheet4", "sheet5")).Visible = False '非表示
シートを消してから、消したシートを非表示って???? 何を考えているのでしょうか? (たぶん) 2024/04/26(金) 22:26:50
たぶん様
すみません。説明用にシートの名前等を変更していて、
非表示のコードは、間違って掲載してしまったようです。
(とらじま) 2024/04/30(火) 12:01:22
こんな話かと思ったのですが、違いますか? (サンプルです)
Sub testC() Dim f As String
f = ThisWorkbook.Path & "\" & "BookB.xlsm" ThisWorkbook.SaveCopyAs f
With Workbooks.Open(f) .Worksheets("Sheet2").Delete .VBProject.VBComponents.Remove .VBProject.VBComponents("Module3") .Save End With End Sub
(xyz) 2024/04/30(火) 13:01:38
ファイルBの指定の仕方【With Workbooks.Open(f)】で、無事に解決しました。
ありがとうございました。
(とらじま) 2024/04/30(火) 15:13:56
なお、複数のファイルを作成するなら、調整したものを一つ作成しておいて
それをFileCopyステートメントで増幅する手もあるでしょう。
(xyz) 2024/04/30(火) 15:50:44
With ActiveWorkbook … End With とか With ThisWorkbook … End With で
ファイルBを操作しようとしていたのでうまくいきませんでした。
SaveCopyAs と Workbooks.Open(f) が、まさしくポイントでした。
他のファイルからデータを取込んで加工したものを別名保存、を繰り返すので、
FileCopyステートメントは今回は当てはまらないようです。
また何かの折に使用してみたいと思います。
本当にありがとうございました。
(とらじま) 2024/05/01(水) 14:02:35
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.