EXCEL 自Bookを複製するマクロ


カテゴリ
ググルヒト
恥晒し/一覧 (10)



2012年4月
19
         

新着エントリ
Outlook Express 6 でエラー 0x800c0133 (6/6)
EXCEL 自Bookを複製するマクロ (4/19)
EXCEL 勝手にセルの色が塗られる (3/13)
SQL Serverからのメッセージが消えない (12/3)
日本語変換が思い通りにいかない (4/23)
VB コンソールへの文字列復帰 (10/28)
タスクからのバッチファイル(*.BAT)実行結果が0x4 (10/5)
VB 標準モジュールが開かない (9/29)
EeePcの無線LANがつながらない (9/28)
EXCELエクセルVBAでエラー400 (9/23)

新着トラックバック/コメント


アーカイブ
2010年 (5)
9月 (3)
10月 (2)
2011年 (2)
4月 (1)
12月 (1)
2012年 (3)
3月 (1)
4月 (1)
6月 (1)


アクセスカウンタ
今日:26
昨日:33
累計:105,343


RSS/Powered by 「のブログ

[PR]



2012年04月19日(Thu)
< EXCELエクセルVBAでエラー... < EXCEL 勝手にセルの色が塗... | EXCEL エクセル/一覧 |  
EXCEL 自Bookを複製するマクロ

Q:分からん。

A:そーだねー、じゃーねー♪ (゚o゚)ノシ

Q:えっ、教えてくれよ

A:何を?だ!! 必要な情報だけ発信しろ!!
  さもなくば帰れ!!

  じゃーねー♪ (゚o゚)ノシ

Q:すみません、ちゃんとお伝えします。

  使用中のEXCELブックを保存した際に
  別の場所にあるEXCELブックの内容も同時に更新したいのです。
  どうしたら良いかな?

A:何てことはない、更新したいEXCEL側に計算式を入れたら?
  それで良いではないか?良いではないか?
  どーでもイイことですが、2回言ってみました。

  こんな感じだな、基本中の基本だが…

   =[参照先EXCEL]'参照先シート'!参照先セル

   例) =[WKBOOK]WKSeet!A5 みたいな!?

Q:参照するシート数が10枚以上、参照するセルも5000ヶ所以上ある。
  そんな計算式組み込んだシート作れないし
  誤ってリンク切れとか起こしたら、メンテナンス面倒だし。
  だからマクロで何とかならないか?と試みたわけです。

A:うむ。
  マクロを使おうと考えたところは評価するぞよ。
  で、どんなマクロだ?

Q:編集中のBOOKに保存がかかったタイミングで更新先のEXCELにコピーする。
  簡単に書くと…
----------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveWorkbook.SaveAs Filename:=更新するEXCELの保存先
End Sub
----------------------------------------------
  こんな感じですね。
  ThisWorkBookでSaveが発動されたタイミングで
  別の場所(更新するEXCELの保存先)に上書き保存する。

A:で、どうなった?

Q:更新先のEXCELは作成されるんですが
  原本のEXCELが更新されなくなってしまいました。
  仕方ないので、ThisWorkBook.Save を終わりに付けてみたら
  とりあえず保存はされたんですが...EXCELが異常終了します。

A:当然だ。
  こりゃ、EXCELが壊れるぞよ

Q:どうして異常終了するのですか?

A:秘密だ。

Q:なぜ?

A:ところで、じゃーねー♪ (゚o゚)ノシ

Q:逃げるな!

A:ヒント
  ・パスが変わる。
  ・新たなEXCELが作成される。
  ・マクロは Workbook_BeforeSave のタイミングで実行される。

  これで分からなければ帰れ、じゃーねー♪ (゚o゚)ノシ


=====================

...ということで自分で調べた結果。

結局どういうことか分からんかった。
(理由は改めて後で聞いてみるか...)


ダメじゃん...

今回は回答見つからず orz





[後日の補記]
  上述のマクロでは複製されたEXCEL(別の場所にあるEXCEL)の中にも
  同じマクロが出来てしまうので非常に都合が悪い。
  また異常終了の起因にもなってるっぽい。
  複製されたEXCEL側には、マクロも入らない形にしたいのであるが…




[後日の補記 その2]
  こんなんで、どうだろうか?
----------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets.Copy
ActiveWorkbook.SaveAs Filename:=更新するEXCELの保存先
ActiveWorkbook.Close
End Sub
----------------------------------------------
  編集元ブック内の全シートを別ブックにコピーして
  コピーされたブックに名前を付けて保存する。

  ※コピーの際、画面が多少うるさい動きをしてしまうのだが
   マクロを含まない形でのコピーは実現できた。
   しかし、「更新するEXCELの保存先」に指定するEXCEL名は
   編集元ブックと同じ名前を指定できないのだ。
   ま、それは Close後に変名すれば解決できる話だな。

  ※あと、この方法は標準モジュールは引き継がれないが
   自シートにマクロがあった場合、残ってしまうな。

  もっと簡単・簡素に実現する方法は無いだろうか…