Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6101 / 13645 ツリー ←次へ | 前へ→

【47145】UpdateLinks? もとあし 07/3/2(金) 10:46 質問[未読]
【47146】Re:UpdateLinks? りん 07/3/2(金) 11:14 回答[未読]
【47147】Re:UpdateLinks? もとあし 07/3/2(金) 11:40 質問[未読]
【47170】Re:UpdateLinks? りん 07/3/2(金) 20:48 発言[未読]
【47173】Re:UpdateLinks? Kein 07/3/2(金) 21:54 発言[未読]
【47200】Re:UpdateLinks? もとあし 07/3/5(月) 9:59 お礼[未読]
【47210】Re:UpdateLinks? Kein 07/3/5(月) 14:41 発言[未読]
【47215】Re:UpdateLinks? もとあし 07/3/5(月) 15:22 質問[未読]
【47220】Re:UpdateLinks? Kein 07/3/5(月) 15:55 発言[未読]
【47222】Re:UpdateLinks? もとあし 07/3/5(月) 16:18 お礼[未読]

【47145】UpdateLinks?
質問  もとあし  - 07/3/2(金) 10:46 -

引用なし
パスワード
   こんにちは。
調べてみてるのですが、行き詰っています。

シートに他ブックへのリンクのあるブックを手動で開くとき、
自動リンクをするかどうか聞いてきます。
更新はしていいのですが、メッセージはでないようにしたいのです。

ツール→オプション→編集
は該当ブック単体へでなく、そのPCのエクセルでの設定だと理解しています。
【6569】Re:ブックのOPEN時に自動リンク・・・ の
Application.AskToUpdateLinks = False
は結局同じことをマクロでしているだけのようでした。

【35428】や【5712】はOpenメソッドで、
Workbooks.Open Filename:="Book1.xls", UpdateLinks:=0
は、私の場合は手動でブックを開くので違うようです。

自分でもまだ調べてみますが、もしお分かりでしたら
Workbook_Open() イベントなどで設定するにはどうしたらいいか教えてください。

どうぞよろしくお願いします。

【47146】Re:UpdateLinks?
回答  りん E-MAIL  - 07/3/2(金) 11:14 -

引用なし
パスワード
   もとあし さん、こんにちわ。

>シートに他ブックへのリンクのあるブックを手動で開くとき、
>自動リンクをするかどうか聞いてきます。
>更新はしていいのですが、メッセージはでないようにしたいのです。
手動でするなら
 編集 → リンクの設定
 左下の「起動時の確認」ボタンをクリック
 メッセージを表示しないで、リンクの自動更新を行なう にチェック

です。

マクロで設定するなら、
Sub TEST()
  Application.ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways 'メッセージなしで自動更新
End Sub

です。

【47147】Re:UpdateLinks?
質問  もとあし  - 07/3/2(金) 11:40 -

引用なし
パスワード
   りん さん、こんにちは。

早速のご回答ありがとうございます。
いくつか教えてください。

> 編集 → リンクの設定
> 左下の「起動時の確認」ボタンをクリック
> メッセージを表示しないで、リンクの自動更新を行なう にチェック
が、私のPC(XP professional 2002 の Excel 2000 )にはありません。

なので、マクロの設定を試みました。
>Sub TEST()
>  Application.ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways 'メッセージなしで自動更新
>End Sub
標準モジュールに上記をそのまま入れてみたり、
ThisWorkbookにそのままいれてみたり、Workbook_Openイベントに変えてみたり。
実行時エラー438:オブジェクトはプロパティ・メソッドをサポートしていません、とでます。
また、上記記述を少し変えてみたり、ヘルプでもその後、UpdateLlinkメソッドがあったので、試してみましたが、
ブックを開くとき自動リンクを相変わらず聞いてきます。

すみません。再度教えてください。
よろしくお願いします。

【47170】Re:UpdateLinks?
発言  りん E-MAIL  - 07/3/2(金) 20:48 -

引用なし
パスワード
   もとあし さん、こんばんわ。

>> 編集 → リンクの設定
>> 左下の「起動時の確認」ボタンをクリック
>> メッセージを表示しないで、リンクの自動更新を行なう にチェック
>が、私のPC(XP professional 2002 の Excel 2000 )にはありません。
XL2002からの新機能のようですね。

>>Sub TEST()
>>  Application.ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways 'メッセージなしで自動更新
>>End Sub
XL2002で新規に追加されたプロパティなので、XL2000では使えません。

開くときに更新しないように選択できれば、マクロでなんとかなりそうですが、そういう設定も見当たらないようですし。

お力になれなくてすみません。

【47173】Re:UpdateLinks?
発言  Kein  - 07/3/2(金) 21:54 -

引用なし
パスワード
   可能性としては、アプリケーションレベルのイベントで特定のブックを
開こうとしているのを検知し、AskToUpdateLinkの設定を切り替える方法
ぐらいでしょーか。
まず Personal.xls の VBEを開いて「挿入」「クラスモジュール」を
選びます。そこへ先頭から

Public WithEvents App As Application

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
  If Wb.Name = ThisWorkbook.Name Then Exit Sub
  App.AskToUpdateLinks = _
  IIf(Wb.Name = "Book1.xls", False, True)
End Sub

というコードを入れます。もちろんBook1.xlsは、リンクを張っている
問題のブックの名前に書き換えて下さい。次に ThisWorkbookモジュールに

Dim X As New Class1

Private Sub Workbook_Open()
  Set X.App = Application
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Set X = Nothing
End Sub

というマクロを先頭から入れます。ブックを閉じ、いったんエクセルも
閉じてから再度立ち上げて下さい。その時からアプリケーションの
イベントが有効になります。各ブックのオープンイベントよりも前に
起動すれば、うまくメッセージを制御できるはずですが・・。

【47200】Re:UpdateLinks?
お礼  もとあし  - 07/3/5(月) 9:59 -

引用なし
パスワード
   りん さん、こんにちは。

いろいろとご尽力くださり、ありがとうございます!
また今後も質問させていただいた際は、アドバイスください。
よろしくお願いします。


Kein さん、こんにちは。

Keinさんには度々お世話になっています。
いつもありがとうございます。

ご提示いただいたコードを早速入れてみました。が、
>Dim X As New Class1
でコンパイルエラー:ユーザー定義型は定義されていません。
とでてしまいます。

クラスモジュール。。。私にはまだ未知の世界です。
Keinさんのお返事を受け、クラスモジュールを調べてみましたが、これまた
奥が深そうです。これから学習していきたいのですが、
今回は丸写しで申し訳ありませんが、何を修正すべきか教えてください。

よろしくお願いします。

【47210】Re:UpdateLinks?
発言  Kein  - 07/3/5(月) 14:41 -

引用なし
パスワード
   >コンパイルエラー:ユーザー定義型は定義されていません。
んー・・おかしいですね。クラスモジュールを挿入したとき、VBEの左側に
ある"プロジェクト・エクスプローラ"に「クラスモジュール」というフォルダが
出来るはずですが、そのツリーの下に「Class1」という名前のモジュールが
ありますか ? あるいは「F2」キーを押してオブジェクト・ブラウザを表示した
とき「クラス」のリストに Class1 があるかないか調べてみて下さい。
念の為確認しますが、その変数は
>次に ThisWorkbookモジュールに
と指示したとうりに入れましたか ? それも"モジュールの先頭"に入れないと
ダメなんですが・・。

【47215】Re:UpdateLinks?
質問  もとあし  - 07/3/5(月) 15:22 -

引用なし
パスワード
   Kein さん、こんにちは。

お返事を見て、ハタと気が付きました。
ThisWorkbookもPersonal.xlsのThisWorkbookなのですね!
リンクを貼っているブックのThisWorkbookに書き込んでいました!
大変失礼しました!Personal.xlsの方に書き込んで、問題なく動作しました。

で、数回試してみたのですが、
こちらも ツール→オプション→編集 
の自動リンク表示のチェックを外している処理のようでした。

私の端末だけでなく、他の端末からも使用するブックなので
できましたら端末に設定するのではなく、
そのブック自体に設定できればと思ったのですが、無理でしょうか。。。

聞いてばかりですみません。

【47220】Re:UpdateLinks?
発言  Kein  - 07/3/5(月) 15:55 -

引用なし
パスワード
   >そのブック自体に設定できれば
結論から言うと、それが可能なら初めからそのような回答が
寄せられているはず、ということです。つまり、この問題のポイントは
ブックレベルのWorkbook_Openイベント「より前に」出てくる
メッセージを制御できるかどうか ? ということなわけで、私はまず、
アプリケーションレベルのイベントにまで"引き上げ"たらどうか ?
と考えました。あともう一つのアイデアとしては、VBSファイルによって
エクセルのインスタンスをCreateObjectメソッドで作るところから始める、
というのもあります。マクロのセキュリティメッセージを出さないように
する方法として、考えられたものです。(例↓)
http://www.city.katano.osaka.jp/kakka/kazei/excel/e_tips.htm#r61
いずれにしても「ブックを立ち上げる前にそのブック名を特定する」必要が
ありそうなので、対象のブック自体にそれを仕込んでも無駄、ということです。

【47222】Re:UpdateLinks?
お礼  もとあし  - 07/3/5(月) 16:18 -

引用なし
パスワード
   Kein さん,

>ブックレベルのWorkbook_Openイベント「より前に」出てくる
>メッセージを制御できるかどうか ?
についての解説ありがとうございます!
丁寧にしていただいて嬉しいです。考え方など、よくわかりました。
これについて、どうするか自分でまた考えてみます。
お付き合いいただいて、本当にありがとうございました。

6101 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free