Excel VBA質問箱 IV

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

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


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

【69315】ブックを開く VBA初心者 11/6/24(金) 3:00 質問[未読]
【69316】Re:ブックを開く 読解不能 11/6/24(金) 5:38 発言[未読]
【69318】Re:ブックを開く UO3 11/6/24(金) 5:57 発言[未読]
【69319】Re:ブックを開く VBA初心者 11/6/24(金) 8:22 発言[未読]
【69320】Re:ブックを開く UO3 11/6/24(金) 9:23 発言[未読]
【69321】Re:ブックを開く UO3 11/6/24(金) 9:26 発言[未読]
【69322】Re:ブックを開く VBA初心者 11/6/24(金) 10:40 発言[未読]
【69323】Re:ブックを開く UO3 11/6/24(金) 11:27 発言[未読]
【69326】Re:ブックを開く VBA初心者 11/6/24(金) 15:06 発言[未読]
【69327】Re:ブックを開く UO3 11/6/24(金) 15:29 発言[未読]
【69328】Re:ブックを開く neptune 11/6/24(金) 16:28 発言[未読]
【69329】Re:ブックを開く VBA初心者 11/6/24(金) 17:36 発言[未読]
【69330】Re:ブックを開く UO3 11/6/24(金) 23:12 発言[未読]
【69331】Re:ブックを開く UO3 11/6/24(金) 23:14 発言[未読]
【69340】Re:ブックを開く VBA初心者 11/6/28(火) 9:38 お礼[未読]
【69342】Re:ブックを開く SK63 11/6/28(火) 14:57 回答[未読]
【69344】Re:ブックを開く VBA初心者 11/6/28(火) 16:09 発言[未読]
【69346】Re:ブックを開く neptune 11/6/28(火) 21:07 発言[未読]
【69348】Re:ブックを開く VBA初心者 11/6/28(火) 21:41 発言[未読]
【69349】Re:ブックを開く neptune 11/6/28(火) 21:55 発言[未読]
【69351】Re:ブックを開く VBA初心者 11/6/29(水) 8:08 発言[未読]
【69352】Re:ブックを開く VBA初心者 11/6/29(水) 16:24 発言[未読]
【69354】Re:ブックを開く neptune 11/6/29(水) 18:40 発言[未読]

【69315】ブックを開く
質問  VBA初心者  - 11/6/24(金) 3:00 -

引用なし
パスワード
    夜遅くにすみません。

『管理表』というブックのF4をダブルクリックした時に、
E4にかいてある名前のファイルを開き、『総カウント数(入力用シート)』を
アクティブにしたく、下記のようなマクロを作ったのですが、
アプリケーション定義またはオブジェクト定義のエラーです。と出てしまうのですが、
どこが間違っていますでしょうか?
教えてください。

Dim 名前 As String

名前 = ActiveCell.Offset(0, -1).Value
Workbooks.Open "C:\Users\USER\Desktop\" & 名前 & ".xls"
Workbooks(名前 & ".xls") _
.Worksheets("総カウント数(入力用シート)").Activate


【69316】Re:ブックを開く
発言  読解不能  - 11/6/24(金) 5:38 -

引用なし
パスワード
   Worksheet_BeforeDoubleClickイベントに書かれて
いるんでしょうけど、掲載されている範囲のコード
ではおかしいところはありません。

名前を開く前にCencel=Trueが入ってないのが気に
なります。

プロシージャに書かれているコードを全部アップ
されては?

【69318】Re:ブックを開く
発言  UO3  - 11/6/24(金) 5:57 -

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

エラーはどのコードで発生しましたか?
たとえば F4ではなくA列のどこかでダブルクリックすると当然ですが、
名前 = ActiveCell.Offset(0, -1).Value で、このエラーになりますが・・・

【69319】Re:ブックを開く
発言  VBA初心者  - 11/6/24(金) 8:22 -

引用なし
パスワード
   ▼UO3 さん:
▼読解不能 さん:

ご回答ありがとうございます。

Workbooks(名前 & ".xls") _
.Worksheets("総カウント数(入力用シート)").Activate

上記の部分でエラーが出ています。
ブックは開いています。
なんとなくわかったのですが、開かれたブックが表面に出ることによって、
名前=開かれたブックのactivecellになっているようなのです。
どうしたら、変更されないようになるのでしょうか?

【69320】Re:ブックを開く
発言  UO3  - 11/6/24(金) 9:23 -

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

▼VBA初心者 さん:

>なんとなくわかったのですが、開かれたブックが表面に出ることによって、
>名前=開かれたブックのactivecellになっているようなのです。

シートモジュールのダブルクリックイベントで受けて、提示のコード順であれば
変数の"名前"に、新しく開かれたブックのActveCellの値が入ることは絶対にありませんが?

それとは別に、読解不能さんからのCancel = True に加え、
操作者が間違った場所をダブルクリックした場合、あるいは、左横(F4ダブルクリックならE4)セルの値が
(保護されているセルでない場合)うっかりミスも含めて、書き換えられているかもしれず、
その場合の対応もいれておくべきですね。

【69321】Re:ブックを開く
発言  UO3  - 11/6/24(金) 9:26 -

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

追伸です。
さらに、想定しておられるように"名前"に空白も含めて想定外の値が入っていたとしても
Application定義エラーではなく、ファイルが見つからないというエラーになるはずです。

Application定義エラーなら、エクセル的におかしいよということですから
ありえないセルを参照したような場合に発生しますね。

【69322】Re:ブックを開く
発言  VBA初心者  - 11/6/24(金) 10:40 -

引用なし
パスワード
   ▼UO3 さん:

ファイルは見つかっていて、開かれているんですよね・・・。
なぜにシートを選択してくれないのでしょうか?
msgboxでシート名があるか確認して、あるとでたのですが・・・。

【69323】Re:ブックを開く
発言  UO3  - 11/6/24(金) 11:27 -

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

しつこいようですが、
・本当にエラーは シートのActivateのところで
・エラー内容はApplication定義・・・・
ですか?

当方で動かしているんですが、ブックがちゃんと開かれた場合、次のActivateででるエラーは
シートがなかった時の「エラー 9 インデックスが有効範囲にありません」だけだと思いますが?

【69326】Re:ブックを開く
発言  VBA初心者  - 11/6/24(金) 15:06 -

引用なし
パスワード
   ▼UO3 さん:
>▼VBA初心者 さん:
>
>しつこいようですが、
>・本当にエラーは シートのActivateのところで
>・エラー内容はApplication定義・・・・
>ですか?
>
>当方で動かしているんですが、ブックがちゃんと開かれた場合、次のActivateででるエラーは
>シートがなかった時の「エラー 9 インデックスが有効範囲にありません」だけだと思いますが?

40036 アプリケーション定義またはオブジェクト定義のエラーです。が
Workbooks(名前 & ".xls") _
.Worksheets("総カウント数(入力用シート)").Activate
の部分で、黄色くなります。
もう一度、確認お願いしてもいいでしょうか?

Private Sub Worksheet_BeforeDoubleClick
(ByVal Target As Range, Cancel As Boolean)

If Target.Column = 6 Then

Dim 名前 As String
名前 = ActiveCell.Offset(0, -1).Value
Workbooks.Open "C:\Users\USER\Desktop\" & 名前 & ".xls"
Workbooks(名前 & ".xls") _
.Worksheets("総カウント数(入力用シート)").Activate

End If

End Sub

【69327】Re:ブックを開く
発言  UO3  - 11/6/24(金) 15:29 -

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

う〜ん・・・
こちらでは問題ないですねぇ。

ただ、今、気がついたんですが、フォルダパス名から想像するに、XL2007かXL2010ですか?
こちらのテストはXL2003でやっており、フォルダも、適当なものを作って実行。

もし、2007か2010なのであれば、夜、自宅の、いずれかの環境でテストしてみますが。

【69328】Re:ブックを開く
発言  neptune  - 11/6/24(金) 16:28 -

引用なし
パスワード
   ▼VBA初心者 さん:
裏付けなしの勘レスですが。

BeforeDoubleClickはDoubleClickしたときに発生しますね。
その時DoubleClickされてセルは編集状態になります。
その編集状態の時、マクロで他のBookを開き特定のシートをActiveにすること自体
が問題なのかも??

IMEも介入してますからねぇ。。。?

と書いてみたもののやっぱり自信なし。

【69329】Re:ブックを開く
発言  VBA初心者  - 11/6/24(金) 17:36 -

引用なし
パスワード
   ▼UO3 さん:

使っているのは2007です。

▼neptune さん:

>▼VBA初心者 さん:
>裏付けなしの勘レスですが。
>
>BeforeDoubleClickはDoubleClickしたときに発生しますね。
>その時DoubleClickされてセルは編集状態になります。
>その編集状態の時、マクロで他のBookを開き特定のシートをActiveにすること自体
>が問題なのかも??
>
>IMEも介入してますからねぇ。。。?
>
>と書いてみたもののやっぱり自信なし。

なるほど、編集状態であることが問題かもしれないのですね。
勉強になります。

【69330】Re:ブックを開く
発言  UO3  - 11/6/24(金) 23:12 -

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

自宅のWin7+XL2007で同じ環境を作り、F4をダブルクリック。
2003でのテストと同じく、問題なく E4にある名前のファイルが開かれ、
総カウント数(入力用シート)が選択されましたよ。

それと、ダブルクリック後、セルは編集状態ですが、こちらのテストでは
これによっておかしくなることは、なかったです。

う〜ん・・・
そちらと何が違うんでしょうか?

【69331】Re:ブックを開く
発言  UO3  - 11/6/24(金) 23:14 -

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

今、ふと思いついたんですが。
ダブルクリックして開かれるブックに、なにかイベントプロシジャが
かかれているということは、ないでしょうか?

【69340】Re:ブックを開く
お礼  VBA初心者  - 11/6/28(火) 9:38 -

引用なし
パスワード
   ▼UO3 さん:
▼neptune さん:

お返事大変遅くなりました。

色々やってみたのですが、
どうもできないので、違う方法を考えることにしました。

アドバイスいただきありがとうございました。

【69342】Re:ブックを開く
回答  SK63  - 11/6/28(火) 14:57 -

引用なし
パスワード
   遅いかもですが、、新しく開いたBookがアクティブブックになるので
Call 初期設定SH で始のBookをSETしてからOPEN、、
でWBK3に開いたブックをSET指定すればOKですが。
セルを指定するには、WBK3.SH1.Range(A1)~ のようにしていします、
ブックがいくつも開いたときには必ずSET指定をするようにしておけば
間違えて、意図しないブックを変えてしまうことは防げます
(指定しないとアクティブなブックのシートに動作します)
開いたブックをアクティブにしない。ではなくブックを指定しする
という考えです。

Sh.range("A1)=100 ’vbaの書いてあるブックのシート1へ  
sh1.RANGE("a1")=10 ’ 開いたブックのシート1へ

Sub OP_file()

   Call 初期設定SH

   Workbooks.Open Filename:=BasePath & strFILENAME’開くファイル
   Set WBK3 = ActiveWorkbook
   WBK3.Activate
   WBK3.Sheets(1).Activate
   Set SH1 = WBK3.Worksheets(1)

End Sub

Sub 初期設定SH()

  Set WBK1 = ThisWorkbook   ' 自ブック
  Set SH = WBK1.Worksheets(1)
  mypath = ThisWorkbook.Path & "\"
  BasePath = ThisWorkbook.Path & "\原稿\"
 
 
End Sub


▼VBA初心者 さん:
>▼UO3 さん:
>▼neptune さん:
>
>お返事大変遅くなりました。
>
>色々やってみたのですが、
>どうもできないので、違う方法を考えることにしました。
>
>アドバイスいただきありがとうございました。

【69344】Re:ブックを開く
発言  VBA初心者  - 11/6/28(火) 16:09 -

引用なし
パスワード
   たびたびすみません。

できない理由がやっとわかりました。

定義された名前が入ってました。
これが入っていたため、activeにできなかったようです。

もしこれが原因の場合、回避する方法はありますか?

【69346】Re:ブックを開く
発言  neptune  - 11/6/28(火) 21:07 -

引用なし
パスワード
   ▼VBA初心者 さん:
>たびたびすみません。
>
>できない理由がやっとわかりました。
>
>定義された名前が入ってました。
>これが入っていたため、activeにできなかったようです。
>
>もしこれが原因の場合、回避する方法はありますか?
テストはしてないのですが、
違う名前にする・・・が一番簡単ではあると思います。

どのbookのどのシートに入っていたのでしょう?
ただ単に、activeにしたいシートのセルに名前を付けていたという事?

【69348】Re:ブックを開く
発言  VBA初心者  - 11/6/28(火) 21:41 -

引用なし
パスワード
   ▼neptune さん:
>テストはしてないのですが、
>違う名前にする・・・が一番簡単ではあると思います。
>
>どのbookのどのシートに入っていたのでしょう?
>ただ単に、activeにしたいシートのセルに名前を付けていたという事?

activeにしたいシートがあるブック(開いたブック)の他のシート部分に
名前が付いていました。

何を違う名前にするのでしょうか?

【69349】Re:ブックを開く
発言  neptune  - 11/6/28(火) 21:55 -

引用なし
パスワード
   ▼VBA初心者 さん:
>activeにしたいシートがあるブック(開いたブック)の他のシート部分に
>名前が付いていました。
あぁ〜そういう事。名前と言っても色々ありますから勘違いしてました。

それでは「総カウント数(入力用シート)」という名前のシートがないという事?
なければ付ければよいと思いますが?

まだ私には状況がよくわからんです。

【69351】Re:ブックを開く
発言  VBA初心者  - 11/6/29(水) 8:08 -

引用なし
パスワード
   ▼neptune さん:
>▼VBA初心者 さん:
>>activeにしたいシートがあるブック(開いたブック)の他のシート部分に
>>名前が付いていました。
>あぁ〜そういう事。名前と言っても色々ありますから勘違いしてました。
>
>それでは「総カウント数(入力用シート)」という名前のシートがないという事?
>なければ付ければよいと思いますが?
>
>まだ私には状況がよくわからんです。

説明不足ですみません。
エクセル2007でいうところの、『数式』→『名前の管理』のところに
登録されている名前のことです。
ここを削除することによって、できるようになったのですが、
他にも開こうとするブックの名前の管理で名前を削除して、
同じように開こうとすると、やっぱりエラーがでてしまいました。

これが原因ではなかったようです・・・。
一つのブックだけできるようになったのはなぜなのか?
さっぱりわかりません。

【69352】Re:ブックを開く
発言  VBA初心者  - 11/6/29(水) 16:24 -

引用なし
パスワード
   調べてみたのですが、
どうしてもわからないので、教えてください。
MultiUse = -1 'True
End
ってどういう意味ですか?

開くファイルにこのマクロが設定されているのですが・・・。

【69354】Re:ブックを開く
発言  neptune  - 11/6/29(水) 18:40 -

引用なし
パスワード
   ▼VBA初心者 さん:
MultiUse ってのも初めて見たもんでちょっとググって調べました。
結果私も判りませんでした。
excelで
MultiUse = -1 'True
等という記述はないと思うんですけど???
というよりコンパイルしてもエラー出ませんか?

他の何かを参照してそこから使用しているとかかな????

多分
ht tp://support.microsoft.com/kb/288902/ja
とは思いますけど、excelでこのオートメションサーバって言葉が
出てくるとは知りませんでした。

オートメションサーバについてはここが判り易そう。
ht tp://d.hatena.ne.jp/chaichanPaPa/20070218/1171793437

識者の方々へ
見当違いなら訂正お願いします。

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