Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2013)
xlsxの内容をxlsmにコピー&処理し、xlsxに戻す
投稿日時: 18/04/27 16:55:35
投稿者: olive23804

いつもお世話になっております。
今回もよろしくお願い致します。
 
長文ですが、お付き合いくださいませ。
 
■背景
 
1日に1回、次のようなファイルが作成されます。
ファイル名のYYYYMMDDhhmmssの部分は、年月日時分秒(ファイルが作成された日時)の意味になります。
 
A_YYYYMMDDhhmmss.xlsx
B_YYYYMMDDhhmmss.xlsx
C_YYYYMMDDhhmmss.xlsx
 



M_YYYYMMDDhhmmss.xlsx
 
 
これらA〜MのBook内のシート構成は、以下のようになっています。
但し、ファイルごとにRepとOriginalのフォーマットは異なります・
 
Date:採取データ日時
Rep:印字用シート
Original:データ取得結果
Def:定義
 
 
α社のシステムが、DateとDefの条件を元にシートOriginalに値を設定してくれます。
シートRepには、この時点ではOriginalと同じ値が入っています。
 
A〜Mのファイルによって作成される時間が異なりますが、Aは毎日必ず1:00に作成されるなど、ファイルごとに作成時間は決まっています。
 
例えば、Aを確認し、データが歯抜けだった場合には、手計算をしてシートRepのその部分に値を入力します。
Originalはデータベースから採取した値そのものが入っており、修正はRepで行います。
Repでは条件付き書式を使って、Originalと値が違う場合にはセルを黄色にしています。
Repに黄色いセルが無ければ、Originalのデータをそのまま使用し、何も編集していないという意味になります。
 
 
 
■問題点
 
長くなりましたが、ここからが本題です。
 
ここまでは、xlxsで問題ないのですが、Repで修正した値をOriginalに戻すということをしたいのです。
手計算が間違っていたから、全てを元(Original)に戻したい。ということです。
手動でOriginalシートをコピーし、Repにペーストすれば、もちろんOKなのですが、自動でとリクエストされています。
ボタンを1つ作成すればよいのですが、α社のシステムはxlsxしかサポートしておらず、xlsmがあると固まってしまいます。
 
xlsmもサポートしていれば全く問題はなかったのですが・・・
 
 
 
■質問
 
次のようなことを考えていますが、これは妥当でしょうか?(実現できるでしょうか?)
 
A〜Mのファイルを全てサポートするようなデータ編集用のEdit.xlsmを1つ作成
Edit.xlsm に、xlsxのOriginalとRepを丸ごとコピー
Repを編集
Repをxlsxに戻す
 
 
Repをコピーの際に、注意点があります。
例えば、次のようにExcel関数を使用しています。Excel関数はそのままで値としてはコピーしたくありません。
また、数値の部分(9:00の0.2、10:00の0.1など)は、=original!B1などのように、Originalシートを参照しています。
 
09:00 0.2
10:00 0.1
11:00 0.5
12:00 0.1



08:00 0.8
 
   =sum(B1:B24)
   =max(B1:B24)
 
 
また、「こっちの方法がいいよ。」など、ありましたら、アドバイスを頂きたく、お願い致します。
参考になるサイトがありましたら、そちらもよろしくお願い致します。

回答
投稿日時: 18/04/27 17:13:21
投稿者: よろずや

olive23804 さんの引用:
次のようなことを考えていますが、これは妥当でしょうか?(実現できるでしょうか?)
 
A〜Mのファイルを全てサポートするようなデータ編集用のEdit.xlsmを1つ作成
ここまでは至極当然だと思います。
しかし、xlsmファイルを弄るのは賛成できかねます。
xlsmファイルにコピーしなくてもできるはずです。

投稿日時: 18/04/27 17:34:12
投稿者: olive23804

よろずやさん
 
コメントありがとうございます。
 
1つ書き忘れていましたが、確認後(修正後、場合によっては修正無しですが)、またα社のシステムに戻して別の処理を行います。
 
α社のシステムの戻す = xlsx が必要
 
xlsx の中で、Repで修正したデータをOriginalに戻すということを、マクロを書かなくてもできるのでしょうか?
 
もし、そのような方法がありましたら、ご教授の程よろしくお願い致します。

回答
投稿日時: 18/04/27 18:13:46
投稿者: よろずや

olive23804 さんの引用:
1つ書き忘れていましたが、確認後(修正後、場合によっては修正無しですが)、またα社のシステムに戻して別の処理を行います。
確認後不要なら保存しなければいいのでは。
当然、バックアップは取りますよね。
olive23804 さんの引用:
xlsx の中で、Repで修正したデータをOriginalに戻すということを、マクロを書かなくてもできるのでしょうか?
xlsmのマクロでxlsxを弄るのは当然の如くできますよ。

回答
投稿日時: 18/04/27 21:54:23
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:

@A〜Mのファイルを全てサポートするようなデータ編集用のEdit.xlsmを1つ作成
AEdit.xlsm に、xlsxのOriginalとRepを丸ごとコピー
BRepを編集
CRepをxlsxに戻す

 
↑説明のために@〜Cを付加しました。
 
@の仕様になりますが、
AでEdit.xlsmに丸ごと複写
というところを、元ブックのクローンを作成します。(バックアップ)
クローンですから、バックアップ用のフォルダを用意します。
Bは、そのままOK
CRep元を戻すのではなく、元ブックを上書き保存します。
 
若し、何かあったら、クローンを複写すればよい。

投稿日時: 18/05/07 10:04:35
投稿者: olive23804

よろずやさん、WinArrow さん
 
9連休中でお礼が遅くなり、申し訳ありません。
アドバイスありがとうございます。
自分の中でモヤモヤしていたイメージが明確になりました。
この方向で作成したいと思います。
作成途中で疑問点が多々出てくるとは思いますが、その際はまたよろしくお願い致します。
 
ありがとうございます。