Excel VBA質問箱 IV

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

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


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

【76166】webbrowserコントロール yama 14/10/7(火) 10:15 質問[未読]
【76167】Re:webbrowserコントロール マルチーズ 14/10/8(水) 10:37 発言[未読]
【76172】Re:webbrowserコントロール yama 14/10/8(水) 13:18 お礼[未読]
【76175】Re:webbrowserコントロール γ 14/10/8(水) 19:54 発言[未読]
【76178】Re:webbrowserコントロール yama 14/10/8(水) 23:15 回答[未読]
【76180】Re:webbrowserコントロール γ 14/10/9(木) 6:16 発言[未読]
【76187】Re:webbrowserコントロール yama 14/10/10(金) 13:15 発言[未読]
【76361】Re:webbrowserコントロール nanashi 14/11/6(木) 17:14 回答[未読]
【76370】Re:webbrowserコントロール nanashi 14/11/7(金) 16:15 回答[未読]

【76166】webbrowserコントロール
質問  yama  - 14/10/7(火) 10:15 -

引用なし
パスワード
   ユーザーフォームにwebbrowserコントロールを配置し、webページを開く操作をしています。このマクロを、複数のエクセルブックを開いた状態で実行すると、既に開いているタスクバー上の他のブックに切り替わらなくなります。回避策はありまsか。

【76167】Re:webbrowserコントロール
発言  マルチーズ  - 14/10/8(水) 10:37 -

引用なし
パスワード
   ▼yama さん:
この掲示板の基本方針からです。

>別のサイト(掲示板)にまったく同じ目的の投稿をすることを、一般に「マルチポスト」といいます。
>当質問箱では、マルチポストは原則認めています。
>つまり、ほかのサイトで質問したことをこのサイトで質問してもかまわないということです。

>しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。
>そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を書いてください。
>質問しっぱなし、というのはモラルに反します。
>「解決したからいいや」というのではありません。

>また、マルチポストを明示的に禁止しているサイトとのマルチポストをしてはいけません。

【76172】Re:webbrowserコントロール
お礼  yama  - 14/10/8(水) 13:18 -

引用なし
パスワード
   ご指摘有難うございます。
(大変失礼しました。今後、「○○にも同じ質問を出しました」等の記載を致します。)

▼マルチーズ さん:
>▼yama さん:
>この掲示板の基本方針からです。
>
>>別のサイト(掲示板)にまったく同じ目的の投稿をすることを、一般に「マルチポスト」といいます。
>>当質問箱では、マルチポストは原則認めています。
>>つまり、ほかのサイトで質問したことをこのサイトで質問してもかまわないということです。
>
>>しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。
>>そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を書いてください。
>>質問しっぱなし、というのはモラルに反します。
>>「解決したからいいや」というのではありません。
>
>>また、マルチポストを明示的に禁止しているサイトとのマルチポストをしてはいけません。

【76175】Re:webbrowserコントロール
発言  γ  - 14/10/8(水) 19:54 -

引用なし
パスワード
   横合い失礼。

>ご指摘有難うございます。
>(大変失礼しました。今後、「○○にも同じ質問を出しました」等の記載を致します。)
今回は書かないでいい、ってことにはならないと思うんだが。
あなたがきちんと明記して下さいな。

【76178】Re:webbrowserコントロール
回答  yama  - 14/10/8(水) 23:15 -

引用なし
パスワード
   ▼γ さん:
>横合い失礼。
>
>>ご指摘有難うございます。
>>(大変失礼しました。今後、「○○にも同じ質問を出しました」等の記載を致します。)
>今回は書かないでいい、ってことにはならないと思うんだが。
>あなたがきちんと明記して下さいな。

追記します。
「モーグQ&A掲示板にも同じ質問を出してます。」

本題に戻らせて頂きます。
本件、補足しますと、フォームの呼び出しは、"UserForm1.Show vbModeless"
を使用してます。しかしながらモードレスでも切替えられません。
他に疑わしい点あるでしょうか。

【76180】Re:webbrowserコントロール
発言  γ  - 14/10/9(木) 6:16 -

引用なし
パスワード
   >本件、補足しますと、フォームの呼び出しは、"UserForm1.Show vbModeless"
>を使用してます。しかしながらモードレスでも切替えられません。
>他に疑わしい点あるでしょうか。

事象を確認していませんが、
それが現実だとすると、
ひとつの解釈として、
ひとつのExcelアプリ-ケーションで、並列処理をユーザーに開放していない
ということではないですか。
別のExcelアプリケーションでWebbrowser処理を実行してみては?

【76187】Re:webbrowserコントロール
発言  yama  - 14/10/10(金) 13:15 -

引用なし
パスワード
   アドバイス有難うございます。あれよこれよと試してますが、ますます深みに、はまってます(引き続き、調べてみます)。
>
>事象を確認していませんが、
>それが現実だとすると、
>ひとつの解釈として、
>ひとつのExcelアプリ-ケーションで、並列処理をユーザーに開放していない
>ということではないですか。
>別のExcelアプリケーションでWebbrowser処理を実行してみては?

【76361】Re:webbrowserコントロール
回答  nanashi  - 14/11/6(木) 17:14 -

引用なし
パスワード
   とあるブログで解決方法を見つけたんだけども、ググっても再発見できない。
要は Application.ShowWindowsInTaskbar を一度 False にしてから再度 True にすればタスクバーアイコンが復活するということでした。
ただし、WebBrowserControl のある UserForm のコードに上記の処理を書いても無効。(タスクバーアイコンがおかしくなるのはコードの実行後だから。)


UserForm には

  For indx = 1 To Application.Workbooks.Count
    Workbooks(indx).Activate
  Next
  ThisWorkbook.Activate

とし、別にイベントクラスモジュールを作って

  Public WithEvents xlApp As Application
  Private Sub RecoverTaskBar()
    xlApp.ShowWindowsInTaskbar = False
    xlApp.ShowWindowsInTaskbar = True
  End Sub
  
  Private Sub xlApp_WorkbookActivate(ByVal Wb As Workbook)
    Call RecoverTaskBar
  End Sub

ThisWorkBookで

  Dim objEventHandler As EventClassModule
  Private Sub Workbook_Open()
    If CLng(Application.Version) <= 14 Then
      Set objEventHandler = New EventClassModule
      Set objEventHandler.xlApp = Excel.Application
    End If
  End Sub

とイベント有効にしてやればよいはず。
#バージョンチェックしている理由が思い出せない。

【76370】Re:webbrowserコントロール
回答  nanashi  - 14/11/7(金) 16:15 -

引用なし
パスワード
   イベント発火させるだけならもっと単純でよかった。

クラスモジュール(ClassModule)
 Private Sub Class_Initialize()
  If Application.ShowWindowsInTaskbar Then
    Application.ShowWindowsInTaskbar = False
    Application.ShowWindowsInTaskbar = True
  End If
 End Sub

WebBrowserControl で Navigate した後に
 '(Dim DummyClass As ClassModule)
 Set DummyClass = New ClassModule
 Set DummyClass = Nothing
するだけでOK。

バージョンチェックしていたのは Excel2013 だと SDI だからっぽい。
情報元はここでした(感謝)。http: //xlsm.web.fc2.com/sp9/excel_taskbar.html

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