EXCELシート上のリンクをクリックすると最小化してしまう

このQ&Aのポイント
  • EXCELのシート上に作成したハイパーリンクをクリックすると、EXCELが最小化してしまう事象について質問があります。
  • 質問者は過去の質問を参考に、マクロを使用して最小化を抑止しようと試みましたが、うまくいきませんでした。
  • 質問者の環境はWindowsXP+EXCEL2000+IE8です。解決策やアドバイスがあれば教えていただきたいとのことです。
回答を見る
  • ベストアンサー

EXCELシート上のリンクをクリックすると最小化してしまう

お世話になります。 早速ですが、質問です。 EXCELのシート上にハイパーリンクを作成し、そのリンクをクリックす ると、IEにてページが表示されるのとほぼ同時にEXCELが最小化して しまいます。 これを抑止したいと、過去の質問から http://oshiete1.goo.ne.jp/qa4942669.html を参照し、 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Application.WindowState = xlNormal AppActivate Application.Caption End Sub というマクロを入れてみたのですが、やはり最小化されてしまいました。 どうもリンクをクリックした際に、IEにページを表示する前に、上記の処 理が実行されてしまっているように見受けられます。 それならば最小化されてしまうタイミングで対処しようと Private Sub Workbook_Deactivate() Application.WindowState = xlNormal AppActivate Application.Caption End Sub というコードも追加してみたのですが、こちらはイベントが発生せず、実行 されませんでした。 この事象は回避不可能なのでしょうか? 何かよい方法がありましたらご教授いただければ幸いです。 ちなみに環境はWindowsXP+EXCEL2000+IE8です。 以上、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>IEにページを表示する前に、 >上記の処理が実行されてしまっているように見受けられます。 OnTimeメソッドで時間をずらしてみては Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)   Application.OnTime Now + TimeValue("00:00:05"), "通常表示" End Sub '標準モジュール Sub 通常表示()   Application.WindowState = xlNormal End Sub

misshiki
質問者

お礼

ご回答ありがとうございます。 どうしても何秒間かはエクセルが最小化された状態が続いてしまうのが 玉に瑕ですね。とは言えどもonTimeメソッドの存在を知らなかったの で、大変勉強になりました。ありがとうございました。 で、今回はちょっと面倒ですが、hyperlink.addressを空白にすること で回避してみました。 'セルへのリンク設定処理 activesheet.hyperlinks.add anchor:=セル,address="",screentip:=URL この状態でリンクをつつくと当然何事も起こりませんが、 SheetFollowHyperlinkイベントは発生してくれるので Workbook_SheetFollowHyperlinkプロシージャ内で  target.address=target.screentip 'アドレスにURLをセット  application.enableevents=false 'イベント発生抑止  target.follow newwindow:=true 'URL送信  target.address=""  application.enableevents=true という処理にしてみました。 かなり無理やりなんですが、何とか期待通りの動作をしてくれておりま す。

関連するQ&A

  • UsableHeight シート名が消える

    エクセルvbaでリボンを非表示にして、ブックを最大化して、微調整したいのですが Workbook_Openイベントで実行すると、シート名が見えない状態になります。 コードはこれです。 Private Sub Workbook_Open() Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 'リボンを非表示にする ActiveWindow.WindowState = xlMaximized 'ウィンドウを最大化する With ActiveWindow .WindowState = xlNormal .Top = 0 .Left = 0 .Width = Application.UsableWidth .Height = Application.UsableHeight ' ウィンドウが使うことのできる範囲の最大限の高さにする End With End Sub ブックを開いた時はシート名が見えないサイズになってしまうのですが もう一度手動でWorkbook_Openイベントを実行すると、ちゃんとシート名まで表示されます。 なぜ同じコードなのに結果が違うのでしょうか? 横幅に関しては1回目も2回目も同じです。

  • エクセルのコード修正について

    OSはWindowsNT、Excel97です。 コマンドボタンで、保存ボタンを作ったのですが、保存したデータを呼び出すと、 上書するにはパスワードを入力しないといけない画面が出てきてしまいます。 これをパスワードを入れなくても画面がすぐ開くようにしたいのですが、以下のコードをどう作りかえれば良いですか? 宜しくお願いします。 Private Sub CommandButton4_Click() Dim FName As String FName = Sheets("フッ素ガルタイト見出し").Cells(6, 3) Application.WindowState = xlMinimized Application.WindowState = xlNormal ActiveWorkbook.SaveAs Filename:="\\業務\見積\" & FName & ".xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="gf3002", ReadOnlyRecommended:= _ False, CreateBackup:=False End Sub

  • エクセル2010でマクロからリボンの最小化したい

    Excel2010でリボンの展開、最小化をマクロでユーザーフォームにはりつけたコマンドボタンから実行したい。 基礎的な勉強を全くしていないので、うまく説明できるか自信がないが質問内容は以下の通りです。 リボンの展開、最小化は、「コントロールキーとF1キーを同時に押す、をコードにすればよい」というのをみつけました。 そこでシートにボタンを張り付けて次のマクロで展開、最小化ができました。 Sub ボタン1_Click() Application.SendKeys Keys:="^{f1}", Wait:=True End Sub しかし、これはユーザーフォームのコマンドボタンでは動きません。 Private Sub CommandButton1_Click() Application.SendKeys Keys:="^{f1}", Wait:=True End Sub 「Private Sub 」だからかと思うが、その先がわかりません。 ちなみに似たような動作で、全画面表示で次のようなものはどちらでも使えます。 Sub ボタン2_Click() If Application.DisplayFullScreen = True Then Application.DisplayFullScreen = False Else Application.DisplayFullScreen = True End If End Sub この場合はユーザーフォームにはりつけても動きます。 ど素人にお知恵を貸してください。

  • エクセルVBA 保護シート&フィルタ実行 全シート

    VBA超初心者です。 たくさんのシートのあるエクセルで、 シート保護後もフィルタを使用できるようにVBAを設定したいと思ってます。 (現在エクセル2000を使用してます) ネットで調べてVBAを設定してみました。 しかし下記のようにするとコンパイルエラーになってしまうのですが、 正しい方法を教えていただけると助かります。 Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean)   Application.CommandBars("Cell").Reset End Sub Private Sub Workbook_Open()   With Application.CommandBars("Cell").Controls.Add( _            Type:=msoControlButton, Before:=1, Temporary:=True)     .Caption = "AutoFilter"     .OnAction = "ThisWorkbook.filter"   End With   With Worksheets.Select     .Unprotect     .EnableAutoFilter = True     .Protect UserInterfaceOnly:=True   End With End Sub Private Sub filter()   On Error Resume Next   Selection.AutoFilter End Sub

  • VB.NET:モーダルで表示したフォームを最小化

    Form2をForm1の所有として、モーダルで表示しました。 '------------------------ Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdChildMdl.Click  'Form2を開く  Dim frmN As New Form2  frmN.ShowDialog(Me) 'MeはForm1 End Sub '------------------------ Form2が最小化された時に、親フォームであるForm1も最小化させたいと思い、 Form2のResizeメソッドに以下のようなコードを書きました。 '------------------------ Private Sub Form2_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize  Select Case Me.WindowState   Case FormWindowState.Minimized    '親フォームも最小化((1))    Me.Owner.WindowState = FormWindowState.Minimized   Case FormWindowState.Maximized    '親フォームも最大化((2))    Me.Owner.WindowState = FormWindowState.Maximized   Case FormWindowState.Normal    '親フォームも通常サイズ((3))    Me.Owner.WindowState = FormWindowState.Normal  End Select End Sub '------------------------ しかし、(2)、(3)は問題なく実行できるのですが、 (1)を実行すると、自フォーム(Form2)が閉じてしまうのです。 そういう仕様なのでしょうか? ご存知の方、教えてください。よろしくお願いします。

  • エクセル95のマクロで自動的に全画面表示したい

    エクセル95のマクロで質問です。 エクセルのファイルを開いた時、自動的に全画面表示にするには Sub Auto_Open() Application.DisplayFullScreen = True End Sub で、立ち上げた時自動的に全画面表示になりますよね。 これを最小化したい場合、このシート上に最小化ボタンをつけて Sub Macro1() Application.WindowState = xlMinimized End Sub というマクロを登録して最小化して、下のツールバーにアイコン化しました。 この場合ですが、次に、ツールバーのエクセルのアイコンをクリックしたとき、エクセル画面は全画面ではなくノーマルなものになってしまいます。 これを自動的に全画面表示にする場合はどうすればいいのでしょうか?

  • ソフト起動用のコマンドボタンをクリックするとエラーがでる

    Windows7 Excel2007でマクロ作成中の初心者です。 フォームにボタンを付け会計ソフトが起動しています。 Private Sub 会計ソフト起動ボタン_Click() Unload Me 会計ソフト End Sub --------------------------------------- Sub 会計ソフト() Dim ReturnValue ReturnValue = Shell("C:\Program Files\Yayoi\Kaikei5\System\Kaikei5.exe", 1) AppActivate ReturnValue'----エラー発生し黄色になる行 Call 拡大 'Range("H14").Select End Sub ------------------------------------------------- Sub 拡大() Application.WindowState = xlMaximized End Sub 以上のコードで立ち上げると「実行時エラー5 プロシージャの呼び出し または引数が不正です。」のエラーが出ないようにするにはどう変更したらよろしいでしょうか?

  • wordでのhyperlinkマクロ作成方法

    通称poppyといいます。 excelでは各シートのマクロ定義で Private Sub Worksheet_followhyperlink(ByVal Target As Hyperlink) Application.Goto reference:=ActiveCell, scroll:=True End Sub と定義し、 thisworkbookでは Private Sub Worksheet_followhyperlink(ByVal sh As Object, ByVal Target As Hyperlink) Application.Goto reference:=ActiveCell, scroll:=True End Sub と定義すればhyperlinkでジャンプした先の画面表示では指定したセルが画面左上に表示されます。 このような方法をwordで実行したいのですが、マクロの作成方法を教えて下さい。 よろしくお願いいたします。

  • Button1をクリックしてエクセルファイルを開きたい

    VB2008のを使用しています。 Button1をクリックして「C:\test.xls」を開きたい場合 どのようなコードを書けばいいのでしょうか? ヘルプを見て Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Public Event Open As WorkbookEvents_OpenEventHandler ThisWorkbook_Open() Handles Me.Open Me.Application.WindowState = Excel.XlWindowState.xlMaximized End Sub End Class としてみましたがエラーになりました。 ご教授よろしくお願いします。

  • 最小化したフォームを元に戻す

    VB2005Expressにて開発を行っています。 最小化したフォームを元に戻せなくて困っています。 どなたかご存知の方がいらっしゃいましたらご教授願います。 下記の動作を実現したいと思っています。 ・Form1でボタンが押されたらForm2を表示する ・この際にForm1を最小化する ・Form2を閉じる ・この際にForm1を元に戻す(手前に表示する) 以下が作成したプログラムです。 ---モジュールにて下記を宣言 Module Module1 'オブジェクトの宣言 Public f1 As New Form1 Public f2 As New Form2 End Module ---Form1でForm2を開くボタンを押した場合の処理 Private Sub Button1_Click(ByVal sender~ 'Form2を表示 If f2 Is Nothing OrElse f2.IsDisposed Then f2 = New Form2 End If f2.Show() 'Form1を最小化する Me.WindowState = FormWindowState.Minimized End Sub ---Form2にて閉じるボタンを押した場合 Private Sub Button4_Click(ByVal sender~ f1.WindowState = FormWindowState.Normal ↑コレで実現できるかと思ったのですが、最小化されたままです・・・ End Sub