[[20160719160638]] 『VBA リンクの変更の処理時間を短縮する方法』(楓) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA リンクの変更の処理時間を短縮する方法』(楓)

いつもお世話になっております。

【リンク元ファイル】
保存先\2016年08月\2016年08月 24-1 管理表.xlsx
保存先\2016年08月\2016年08月 24-2 管理表.xlsx

【リンク先ファイル】
保存先\2016年08月\2016年08月 24 管理表.xlsx

上記リンク先ファイル内には全18シートあり、そのシート内すべてにリンク元ファイルのリンクがあります。
シートによってはリンクのセルは異なり少ないので100セル程度
多いシートで30000セル分あります。

リンク先ファイルの次月分を作成するためのマクロを作成しており、単純に全シートに対してReplaceで検索置換を行うマクロを作っていましたが、
いざ実行してみると24 管理表を作成するのに50分近くかかってしまいました。

そこでみなさんにお尋ねしたいのが、リンク変更のための処理時間をどうにか短縮できる方法がないかというところです。

検索値は「2016年07月」
置換値は「2016年08月」
となります。

なお、画面描写の停止開始・再計算の手動自動は付けています。

宜しくお願い致します。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 データ-接続-リンクの編集でリンク元の変更をマクロ記録して参考にしてはどうか?

(ねむねむ) 2016/07/19(火) 16:39


どれだけのデータ量か判らないし、どんなマクロを書いているのかも判らないので、何とも…。
とりあえず、エディタで修正してしまう手作業案なぞ。エディタでも何十分もかかるくらいのデータ量ならば、改善の見込みなしです。

(1)ブックを別名でコピーする。このとき、拡張子は.ZIPとする。
(2)ZIPファイル内の \xl\worksheets\sheet1.xml 等をエディタで開く。
(3)エディタで文字列置換する。
(4)上書き保存。
(5)ZIPファイルの拡張子を .xlsx に戻す。
(6)Excelで開いてみる。
(???) 2016/07/19(火) 17:19


ねむねむ様
実際に試してみましたが、記録している段階から結構な時間がかかりましたが、マクロに当て込んでみて実行してみた結果は30分と検索置換よりは20分短縮されました。

ただ、1つだけを実行するわけではないため可能な限り短縮させたいです。

まだなにか方法があったらお願いします。

???様
sheet1.xml内を確認しましたが、ブックに対してが全て'[1]または'[2]となっており、確認がとれませんでした。

(楓) 2016/07/19(火) 17:49


[1]とか[2]になっているパス部分は、以下に情報があるので、これを書き換えてみてください。
1,2箇所変えるだけで、全セルまとめて変わります。(変更後にブックを開く際、更新を聞かれますが、OKした後にどのくらいかかるかが気になるところ)
 \xl\externallinks\_rels\externalLink1.xml.rels

まぁ、うまくいったとしても、これはブックのフォーマットを直接操作する無理矢理案なので、定常化作業には向きませんが。(月一くらいならば、一番遅いブックだけ手作業、というのもアリかもです)
(???) 2016/07/20(水) 09:33


コメント返信:

[ 一覧(最新更新順) ]


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