• ベストアンサー

VBA(VBScript)のInputBoxで入力したアドレスがなかったら自動的に別のアドレスで表示したい

例えば C:\a を入力して、フォルダがなければ自動的に語尾にbの文字列を足して C:\ab のフォルダを表示するには下記のスクリプトをどのように改良すればよいのでしょうか? Dim s s = InputBox("アドレスを入力") With CreateObject("InternetExplorer.Application") .Visible = True .Navigate s End With ご存知の方がおられましたらご回答をよろしくお願いします。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

下記が参考になればと思います http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html フォルダの存在を先にしておき、エクスプローラへ値を渡した方が良いのではと思います

参考URL:
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 それは、前回の話の延長だと思いますが、ちょっとイメージが違ってくると思います。 あえて前回の回答で、そのExcelの枠を取ってしまいましたから、もう、ここカテゴリの範囲とは直接関係なくなってしまっているようです。 それと、Internet Explorer にフォルダのアドレスを渡してもよいのですが、直接、Explorer に渡す方法を考えてみました。前回の回答に対して、どう結びつけるのかは分かりませんし、こちらの書いた考え方が、返って意味が違うものかもしれませんが、ある程度の標準的な内容のレベルは、ご質問者の理解とは別に、維持したいと思います。ただし、Excelオブジェクトを使うのは、私はお勧めしません。 Sub や Function は、サブルーチン・プロシージャとして個別に利用できますから、引数だけ与えてあげればよいです。 意味もなく単語を付け足したところで、それでフォルダを開けられず、そのまま終了では、プログラムとしては意味がありません。フォルダのある・なしだけなら、以下のユーザー定義関数だけを抜き出して適当に利用してください。ユーザー定義関数の引数に入れれば、フォルダがあれば、True、なければ、False が返ります。 なお、実際に、付け足す文字が1個というのはありえませんから、複数を加えるようにしました。最初にヒットしたもので開きます。ヒットしなければ、その親フォルダから、ダイアログで開いて、目視で選択します。なお、sSEPARATOR は、\ にしています。通常は問題ないと思いますが、違うようなら、その部分を書き換えてください。 '付け足す単語 Const ADD ="b" 入力例: Const ADD ="b,c,d,e" のようにすればよいです。 以下には、テキスト・ドキュメントで取り出せば、タブコードは入っていますが、見かけ上は、ベタのままです。ベタのほうがファイル量は減ります。以下で、だいたい、タブ入りで1.20 Kbになります。限界量が分かりませんから、これ以上小さくするなら、DirCheck()関数だけを使って調べるだけでもよいかもしれません。なお、今回のコードで変数/定数の、ADDs と sSEPARATOR は残しておいたほうが良いと思います。他の変数は削除しました。 名前は適当に、拡張子は、.vbs です。 '------------------------------ Dim ADDs 'セパレータ Const sSEPARATOR ="\" '付け足す単語:複数の場合は ADD="b,c,d,e" Const ADD ="pex" ADDs = Split(ADD,",") s = InputBox("アドレスを入力") Call GotoWeb(s) Sub GotoWeb(s) If s ="" Then Exit Sub flg =False '入力値をチェック If Instr(s,sSEPARATOR)>0 Then If Right(s,1)= sSEPARATOR Then s =Mid(s,1,Len(s)-1) inFlg =True Else inFlg =False End If If InFlg Then If DirCheck(s) =False Then For Each a in ADDs t = s & a If DirCheck(t) =True Then s =t Flg = True Exit For End If Next Else Flg =True End If End If If Flg =False And InFlg Then t = Mid(s,1, InStrRev(s, sSEPARATOR)) Set f= CreateObject("Shell.Application").BrowseForFolder(0,"フォルダを選んでください",&H8, t) If f Is Nothing Then Exit Sub Else s = f.Items.Item.Path End If End If If InFlg Then CreateObject("WScript.Shell").Run "explorer.exe " & s Else With CreateObject("InternetExplorer.Application") .Visible = True .Navigate s End With End If End Sub Function DirCheck(s) Set objFS =CreateObject("Scripting.FileSystemObject") If objFS.FolderExists(s) Then DirCheck =True Else DirCheck =False End iF End Function '----------------------------------------

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

フォルダーの閲覧なら、A No.1の方の言われる通り、別の方法を取った方がベターと思いますが、後学のためにやってみました。VBScriptは詳しくないので、VBAのコードです。参考URLの相当下の方に、リンク切れの判別方法があります。ご参考まで。 Sub test() Dim s Dim returnMessage As String Dim retryFlag As Boolean s = "c:\a" With CreateObject("InternetExplorer.Application") .Visible = True .Navigate s While .readystate <> 4 While .busy = True DoEvents Wend Wend On Error Resume Next '正常に開けると次がエラーになるので誤魔化し returnMessage = .Document.body.innerText If InStr(returnMessage, "ページを表示できません") Then s = "c:\ab" retryFlag = True .Quit End If End With If retryFlag Then With CreateObject("InternetExplorer.Application") .Visible = True .Navigate s End With End If End Sub

参考URL:
http://hanatyan.sakura.ne.jp/logbbs/wforum.cgi?mode=new_sort

関連するQ&A

  • 複数のタブを開きたい IE

    IE9を使っています。 画像のようにタブを二つ開くにはどうすればいいでしょうか? Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub だと一つのタブしか開けません。 Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub にしても Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" objIE.Navigate2 "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub にしても1つのタブしか開けないです。 ご回答よろしくお願いします。

  • インターネットで調べてVBSで下のようなものを作ってみました。

    インターネットで調べてVBSで下のようなものを作ってみました。 やりたいことは、IEを起動して複数のサイトを複数のタブで表示 したいのですが、サイトの種類分IEも起動してしまいます。 考えているようなことはできないのでしょうか。 ========ここから下です======== Option Explicit Dim objIE Dim objShell 'Shell.Application Set objShell = CreateObject("Shell.Application") Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2 "http://www.okwave.jp/" Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2 "http://www.google.co.jp/" Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2 "http://www.yahoo.co.jp/" ======================= よろしくお願いいたします。

  • VBSのNavigateコマンドについて

    VBSのNavigate の URL指定の中に inputboxで 変数を代入したいのですがうまくいきません お分かりの方 教えていただければ幸いです。 Dim Input Input = InputBox("~~~~") Set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.Navigate "https://xxx Input xx" ← この中のURLに挿入したい。 末筆ですみませんがよろしくお願いします。

  • IE9のアドレスバー非表示について

    IE9のアドレスバーを非表示にしようと思い、次のようにvbsを作ったのですが、ie7などでは非表示になるのですが、IE9ではなりません。 どうすればよいのでしょうか? test.vbs -------------------- Option Explicit On Error Resume Next Dim objIEApp Set objIEApp = CreateObject("InternetExplorer.Application") With objIEApp .Navigate "http://xxx/xxx.html" .AddressBar = False .Visible = True End With

  • VBAでIE操作をするサンプル

    VBAでIE操作をするサンプルをネットでいくつか見ているのですが Sub Sample1() Dim objShell As Object Dim objIE As New InternetExplorer Set objShell = CreateObject("Shell.Application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing Set objShell = Nothing End Sub Sub Sample2() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub ではどちらを使った方がいいのでしょうか? 圧倒的にSample2の方がネットでは多いのですが Sample1のやり方もあることを知りました。 Sample1の方法でブラウザを開くメリットはあるのでしょうか?

  • NewはCreateObjectと同じ意味?

    Sub test01() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True End Sub Sub test02() Dim objIE As New InternetExplorer objIE.Visible = True End Sub この二つのコードを比較した場合、 Dim objIE As New InternetExplorer で宣言すれば、 Set objIE = CreateObject("InternetExplorer.application") がなくても、 objIE.Visible = True をしてみるとブラウザが立ち上がっているのですが、 これは NewはCreateObjectと同じ意味という事でしょうか?

  • vbsでホームページ表示について

    vbsファイル ・Dim objIE ・Set objIE = CreateObject("InternetExplorer.Application") ・objIE.Visible = True ・objIE.Navigate2 "http://***.***1/" ・objIE.Navigate2 "http://***.***2/", &H1000 ・objIE.Navigate2 "http://***.***3/", &H1000 ・Set objIE = Nothing この中で「, &H1000」を a=", &H1000" objIE.Navigate2 "http://***.***3/" & a とすると正常に表示できません。 変数??に代入するにはどうすればいいのでしょうか。 アドバイス、よろしくお願いします。

  • NavigateとNavigate2の違いは?

    Sub Sample_Navigate() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub Sub Sample_Navigate2() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate2 "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub 上記二つのサンプルをテストしてみましたが違いが判りません。 Navigate2のヘルプを見ようとしても キーワードが見つかりません。が見つかりませんになってしまいます。 この二つのメソッドの違いを教えていただけますか? オブジェクトブラウザの情報だと Navigateは Sub Navigate(URL As String, [Flags], [TargetFrameName], [PostData], [Headers]) SHDocVw.InternetExplorer のメンバー Navigates to a URL or file. Navigate2は Sub Navigate2(URL, [Flags], [TargetFrameName], [PostData], [Headers]) SHDocVw.InternetExplorer のメンバー Navigates to a URL or file or pidl. と書いてありました。 引数の数は一緒でした。

  • ie 64bit 32bit どちらが開いてる?

    Sub Sample() Dim objIE As InternetExplorer Set ObjIE = CreateObject("InternetExplorer.application") ObjIE.Visible = True ObjIE.Navigate "http://www.yahoo.co.jp/" Set ObjIE = Nothing End Sub で、vbaからieを開いた場合、64bit 32bitのどちらで開かれるのでしょうか? 私の環境はwin7、IE9です。

  • IEではなくファイアフォックスを指定することは

    VBAでブラウザを開く場合、 IEではなくファイアフォックスを指定することは可能ですか? 既定のブラウザはIEにしています。 Sub test1() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "http://www.ocn.ne.jp/" objIE.Visible = True Set objIE = Nothing End Sub の Set objIE = CreateObject("InternetExplorer.Application") の部分を Set objIE = CreateObject("firefox.exe") に変えてみたら、 【ActiveX コンポーネントはオブジェクトを作成できません。(Error 429)】 になりました。

専門家に質問してみよう