[[20190212100505]] 『エクセルマクロを実行すると開いている他のマクロ』(さゆり) ページの最後に飛ぶ

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

 

『エクセルマクロを実行すると開いている他のマクロファイルに影響を与える』(さゆり)

こんにちは。

指定時間になったら自動でデータ抽出するエクセルマクロを作成しました。

うっかり他のマクロファイルを閉じるのを忘れ開きっぱなしにしていると
他のマクロファイルに影響を与え正常にデータを抽出できません。

他のマクロファイルを立ち上げていても影響を与えないようにするには、
どうしたらよいのでしょうか。

インターネットで解決策を調査してみました。

1.ThisWorkbook.Worksheets(マクロを実行しているワークブックを参照)を使ってマクロを作成

With ThisWorkbook.Worksheets("Sheet1")

    .Range("A1:A100").Clear
    .Range("A1").Value = "マクロ処理"
    .Range("A1").Copy
    .Range("A3").Select: ActiveSheet.Paste
    .Application.CutCopyMode = False
End With

2.ブック名を固定して指定時間になったらマクロが動きますが、まず処理するブック名
  にアクセスしてからマクロ処理する。 

   Windows("Book1.xlms").Activate

3.コピー範囲は、変数で指定して貼り付ける。

   Range(コピー範囲).Copy                         

   
以上 1,2,3を試してみましたが、やはり他のマクロファイルに影響を与えます。

どうしたら開いている他のマクロファイルに影響を与えないようになりますか。
ご教授をお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 他のブックに影響を与えるというのは他のブックに張り付けてしまうということか?
 それとも別の事か?
 あと、影響が何かはわからないが
 >ActiveSheet.Paste
 >Range(コピー範囲).Copy  
 ここらもシート名を指定、親シートを指定した方がいいのではないか?

(ねむねむ) 2019/02/12(火) 10:16


 直接の回答ではありません。
 過去の回答も見てきましたが、なぜ人が見ていないときに実行させることに拘るのですか?
 見ていないなら、更新されようがされまいが関係なくないですか?

 見るときに必要なら、Wrokbook.Openイベントで実行させればよく、
 個人的には作業フローそのものの見直しが良いと思います。

 また「データの抽出」が何にあたるかわかりませんが、MicrosoftQueryで定期的に更新という手段はとれませんか?

(稲葉) 2019/02/12(火) 10:23


ねむねむ様 回答有難うございました。

>他のブックに影響を与えるというのは他のブックに張り付けてしまうということか?

他のブックのマクロを参照してそこで停止してしまいます。他のブックのマクロなので
参照するシート名も処理も違います。

>ここらもシート名を指定、親シートを指定した方がいいのではないか?

はい 試してみます。有難うございました。

稲葉様 回答有難うございました。

>なぜ人が見ていないときに実行させることに拘るのですか?

毎日 4:00,8:00,12:00,16:00にネット上のwepデータを開いてエクセルにコピー後、
必要なデータのみ抽出してグラフを作成します。
グラフのX軸は、時間(4:00,8:00,12:00,16:00)、Y軸は、必要なデータを抽出したした合計になります。

毎日 時間ごとの推移をみます。

>また「データの抽出」が何にあたるかわかりませんが、MicrosoftQueryで定期的に更新という手段はとれませんか?

ネット上のwebデータの内容をコピーしますのでクエリーは使いません。

他によい方法がありましたらご教授をお願いします。

(さゆり) 2019/02/12(火) 10:47


 >他のブックのマクロを参照してそこで停止してしまいます。他のブックのマクロなので 
 >参照するシート名も処理も違います。
 そのマクロがWorksheet_Changeなどのイベントマクロであればやはり他のブックに書き込まれているのではないだろうか?
(ねむねむ) 2019/02/12(火) 10:52

[[20190116140312]] 『web上にあるボタンをクリックしてエクセルファイメx(さゆり)
 あー読んだと思ってTABLEタグ上のデータかと思ったけど
 テーブルタグにあるボタン(Javascript)を押した先のエクセルファイルを開いて
 そのブックのデータを抜くんですね。(想像すると)
 そのブックも定期的に新しく変わるから、決まった時間に抜きたいってことですね。
 失礼しました。

 そうすると、私には手に負えないですね。
 あとはアイデアとしては、ダウンロードとファイルの保存だけスケジュールしておいて、
 データを引っこ抜いてグラフ化するのは後で行うくらいしか思いつかないです。

(稲葉) 2019/02/12(火) 11:38


ねむねむ様 回答有難うございました。

>そのマクロがWorksheet_Changeなどのイベントマクロであればやはり他のブックに書き込まれているのではないだろうか

Worksheet_Changeは使っていません。

イベントは、1種類です。

Workbooks.Open Filename:=フォルダパス & "\" & ファイル名, UpdateLinks:=0, IgnoreReadOnlyRecommended:=False

でファイルを開いています。

別ファイルを呼出して完成したグラフのあるシートを別ファイルにコピーして
別ファイルを閉じています。

稲葉様 回答有難うございました。
今後ともよろしくお願いいたします。

(さゆり) 2019/02/12(火) 11:56


HTML上のブック名リンクを調べて順次これをクリックすることでブックを開く…、というのが現在の方法ですが、各々のブックのURLが判るならば、URLDownloadToFile というAPIを利用することで、ブックをダウンロードしてローカルに持ってくることができます。 これを開いて処理していく、という方法はいかがでしょう?

HTMLからクリックしてブックを開くと、それはIEのテンポラリフォルダ上にコピーされてから動作します。 これを、好きな場所に元のブック名で保存してやれば、HTMLからブックを得るマクロと、ブックからデータを得るマクロに切り分けられるので、HTML絡みのゴタゴタと無縁な状態でブックを開けますが、手掛かりになりませんか?
(???) 2019/02/12(火) 13:56


???様 回答有難うございます。

>HTML上のブック名リンクを調べて順次これをクリックすることでブックを開く

はい。
HTML上のブックを開いて表をそのままコピーしてエクセルシートに貼り付けた後、
すぐにHTML上のブックを閉じています。

違うHTML上のブックが4つあるので4回同じことを繰り返しています。

エクセルに4つの表を貼り付けた後、集計処理しています。

マクロ処理時間は、約30秒くらいです。

 

(さゆり) 2019/02/12(火) 14:08


コメント返信:

[ 一覧(最新更新順) ]


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