Excel VBA質問箱 IV

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

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


10993 / 13644 ツリー ←次へ | 前へ→

【18757】ファイルを開く 初心者です 04/10/10(日) 4:22 質問[未読]
【18759】Re:ファイルを開く ちゃっぴ 04/10/10(日) 10:29 発言[未読]
【18760】Re:ファイルを開く 初心者です 04/10/10(日) 14:14 質問[未読]
【18761】Re:ファイルを開く [名前なし] 04/10/10(日) 14:30 発言[未読]
【18762】Re:ファイルを開く ちゃっぴ 04/10/10(日) 14:47 回答[未読]
【18767】Re:ファイルを開く 初心者です 04/10/10(日) 18:41 質問[未読]
【18771】Re:ファイルを開く かみちゃん 04/10/10(日) 20:35 発言[未読]
【18773】Re:ファイルを開く 初心者です 04/10/10(日) 22:49 質問[未読]
【18777】Re:ファイルを開く かみちゃん 04/10/11(月) 10:02 回答[未読]
【18778】Re:ファイルを開く 初心者です 04/10/11(月) 11:57 お礼[未読]

【18757】ファイルを開く
質問  初心者です  - 04/10/10(日) 4:22 -

引用なし
パスワード
   いつも参考にさせて頂いています。
ひとつ質問させてください。
BOOK1を開く際自動的にBOOK2を先に開くマクロを作りたいのですが、うまくいきません。どうしてもBOOK1を先に開いてします。
どうぞよろしくお願いします。

【18759】Re:ファイルを開く
発言  ちゃっぴ  - 04/10/10(日) 10:29 -

引用なし
パスワード
   >BOOK1を開く際自動的にBOOK2を先に開くマクロを作りたいのですが、うまくいきません。どうしてもBOOK1を先に開いてします。

どのようにコードを記述したのでしょうか?

まずは、ダメだったソースを公開してください。

【18760】Re:ファイルを開く
質問  初心者です  - 04/10/10(日) 14:14 -

引用なし
パスワード
   返信ありがとうございます。
ThisworkbookのOpenメゾットにマクロを書くのは分かったのですが、下のマクロで先にBOOK2を開くにはどのうように記述すればよいか分かりません。

Private Sub Workbook_Open()
  Workbooks.Open ("D:\My Documents\book2.xls")
End Sub
よろしくご指導ください。

▼ちゃっぴ さん:
>>BOOK1を開く際自動的にBOOK2を先に開くマクロを作りたいのですが、うまくいきません。どうしてもBOOK1を先に開いてします。
>
>どのようにコードを記述したのでしょうか?
>
>まずは、ダメだったソースを公開してください。

【18761】Re:ファイルを開く
発言  [名前なし]  - 04/10/10(日) 14:30 -

引用なし
パスワード
   ▼初心者です さん:

BOOK2を先に開かなければならない理由はなんですか?

【18762】Re:ファイルを開く
回答  ちゃっぴ  - 04/10/10(日) 14:47 -

引用なし
パスワード
   >Private Sub Workbook_Open()
>  Workbooks.Open ("D:\My Documents\book2.xls")
>End Sub

これはBook1に書かれていますよね。
ですから、Book1が開かれた時点でBook2が開かれます。
したがって、この方法は使えません。

対処方法としては、WSHでExcelBookを開くScriptを書き、
そいつを実行させるように運用を変更します。

Const BOOK1_PATH = "Book1パス名"
Const BOOK2_PATH = "Book2パス名"

Dim appExcel, wbkBook1, wbkBook2

'Excel呼び出し
On Error Resume Next
Set appExcel = GetObject(, "Excel.Application")
On Error Goto 0
If Err Then
  Set appExcel = CreateObject("Excel.Application")
End If

'Bookを開く
On Error Resume Next
Set wbkBook2 = appExcel.Workbooks.Open(BOOK2_PATH)
Set wbkBook1 = appExcel.Workbooks.Open(BOOK1_PATH)
On Error Goto 0
If wbkBook1 Is Noting Then
  MsgBox BOOK1_PATH & "が開けません"
End If
If wbkBook2 Is Noting Then
  MsgBox BOOK2_PATH & "が開けません"
End If

こいつをテキストエディタで入力し、
拡張子VBSで保存して実行してみてください。

ところでなぜ、Book2から開きたいのでしょうか?

【18767】Re:ファイルを開く
質問  初心者です  - 04/10/10(日) 18:41 -

引用なし
パスワード
   ご指導ありがとうござます。
本当に初歩的な質問で申し訳ありませんが、WSH?VBS?の意味がよく理解できません。以下の記述をモジュールに書くのではなく、違うところで書くと言う意味でしょうか?もう一度ご指導いただければと思います。
BOOK2を先に開く理由はBOOK1は集計表、BOOK2は部品表の役割でBOOK1の品名の単価をBOOK2からvlookup関数で拾っています。各ファイル10シートずつあり、BOOK2(参照元)を開いていないとBOOK1を開くのに異常に時間が掛かってしまいます。自分で使うファイルではなく、会社で使うファイルでシート数などを替えることができません。
どうぞよろしくお願いします。

▼ちゃっぴ さん:
>>Private Sub Workbook_Open()
>>  Workbooks.Open ("D:\My Documents\book2.xls")
>>End Sub
>
>これはBook1に書かれていますよね。
>ですから、Book1が開かれた時点でBook2が開かれます。
>したがって、この方法は使えません。
>
>対処方法としては、WSHでExcelBookを開くScriptを書き、
>そいつを実行させるように運用を変更します。
>
>Const BOOK1_PATH = "Book1パス名"
>Const BOOK2_PATH = "Book2パス名"
>
>Dim appExcel, wbkBook1, wbkBook2
>
>'Excel呼び出し
>On Error Resume Next
>Set appExcel = GetObject(, "Excel.Application")
>On Error Goto 0
>If Err Then
>  Set appExcel = CreateObject("Excel.Application")
>End If
>
>'Bookを開く
>On Error Resume Next
>Set wbkBook2 = appExcel.Workbooks.Open(BOOK2_PATH)
>Set wbkBook1 = appExcel.Workbooks.Open(BOOK1_PATH)
>On Error Goto 0
>If wbkBook1 Is Noting Then
>  MsgBox BOOK1_PATH & "が開けません"
>End If
>If wbkBook2 Is Noting Then
>  MsgBox BOOK2_PATH & "が開けません"
>End If
>
>こいつをテキストエディタで入力し、
>拡張子VBSで保存して実行してみてください。
>
>ところでなぜ、Book2から開きたいのでしょうか?

【18771】Re:ファイルを開く
発言  かみちゃん  - 04/10/10(日) 20:35 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>BOOK2を先に開く理由はBOOK1は集計表、BOOK2は部品表の役割でBOOK1の品名の単価をBOOK2からvlookup関数で拾っています。各ファイル10シートずつあり、BOOK2(参照元)を開いていないとBOOK1を開くのに異常に時間が掛かってしまいます。自分で使うファイルではなく、会社で使うファイルでシート数などを替えることができません。

そういう方法は、私の職場でもよくしています。
ただ、Book1を開くときに、Book2を開く必要はないような気がします。
異常に時間がかかるというところが気になります。
Book2を開いているときと開かないときとでは、Book1を開くのに、どれくらいの時間の差があるのでしょうか?

【18773】Re:ファイルを開く
質問  初心者です  - 04/10/10(日) 22:49 -

引用なし
パスワード
   BOOK2を先に開いていると30秒、BOOK1のみ開くと3分〜3分半掛かります。
実際には共有サーバーでの作業になります。ファイルを開いてからリンクのことろでずーっと再計算してしまいます。BOOK1にマクロでBOOK2から単価を拾ってこようかと考えましたが、リンクさせて最新の情報で集計したいとのことなので、このような方法をとっています。
よろしくお願いします。

▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>横から失礼します。
>
>>BOOK2を先に開く理由はBOOK1は集計表、BOOK2は部品表の役割でBOOK1の品名の単価をBOOK2からvlookup関数で拾っています。各ファイル10シートずつあり、BOOK2(参照元)を開いていないとBOOK1を開くのに異常に時間が掛かってしまいます。自分で使うファイルではなく、会社で使うファイルでシート数などを替えることができません。
>
>そういう方法は、私の職場でもよくしています。
>ただ、Book1を開くときに、Book2を開く必要はないような気がします。
>異常に時間がかかるというところが気になります。
>Book2を開いているときと開かないときとでは、Book1を開くのに、どれくらいの時間の差があるのでしょうか?

【18777】Re:ファイルを開く
回答  かみちゃん  - 04/10/11(月) 10:02 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>BOOK2を先に開いていると30秒、BOOK1のみ開くと3分〜3分半掛かります。
>実際には共有サーバーでの作業になります。ファイルを開いてからリンクのことろでずーっと再計算してしまいます。

Book1とBook2をローカル端末に置くとどうなりますか?
共有サーバーということは、LANの環境にもよりますから、遅くなるのは必至だと思います。

では、新たにBook3を作って、Book3を開くときに、Book2を開いて、Book1を開くような方法ではいけませんか?
Book1を開くときに、Book2をさきに開くことは、通常はできないと思いますので・・・

【18778】Re:ファイルを開く
お礼  初心者です  - 04/10/11(月) 11:57 -

引用なし
パスワード
   ご指導ありがとうございます。確かに共有サーバーのほうが開くのが少し遅くなりました。しかし、ローカルでも3分弱掛かってしまいます。BOOK3から開く方法は思いつきませんでした。ちょっと試してみます。
また何かありましたら質問させてください。
よろしくお願いいたします。


▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>BOOK2を先に開いていると30秒、BOOK1のみ開くと3分〜3分半掛かります。
>>実際には共有サーバーでの作業になります。ファイルを開いてからリンクのことろでずーっと再計算してしまいます。
>
>Book1とBook2をローカル端末に置くとどうなりますか?
>共有サーバーということは、LANの環境にもよりますから、遅くなるのは必至だと思います。
>
>では、新たにBook3を作って、Book3を開くときに、Book2を開いて、Book1を開くような方法ではいけませんか?
>Book1を開くときに、Book2をさきに開くことは、通常はできないと思いますので・・・

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