• ベストアンサー

IEでローカルフォルダを開いて取得したURLを修正したいですVB.NET

IE(インターネットエクスプローラ)でローカルのフォルダを開いて そのパス文字列を Dim a As String = IE.LocationURL で取得すると、たとえば開いているフォルダが C:\TEST\コピー (2) ~ 新しいフォルダ だった場合 file:///C:/TEST/コピー%20(2)%20~%20新しいフォルダ という文字列が取得できるのですが、 最初の8文字の削除や/を\に置き換えることは普通の 文字列関数で良いのですが、半角スペースが%20になっている部分を 修正するのに若干心配があります。 (%はフォルダ名に使える文字なので) 何か良い解決策がありましたら教えていただけませんでしょうか。 よろしくお願い致します。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

System.Webを参照設定に追加して TextBox1.Text = System.Web.HttpUtility.UrlDecode(oIE.LocationURL) といった具合にデコードしてやればいいように思います

goo081102
質問者

お礼

この方法で元の文字に戻すことができました。 いつもすみません。 ありがとうございます。

その他の回答 (1)

回答No.1

試しに %20 ってフォルダをIEで開いたら %2520 になったので、それで判断できるような気がします。 (%は%25になる)

goo081102
質問者

補足

postal0x02様 ご回答と検証もして頂いてありがとうございます。 %が変化するとは思いつきませんでした。 %については対処可能そうです。 でもそうなると他に変化する文字がないのかと心配になってきました。

関連するQ&A

  • 現在開いてるIEのタイトルを取得するには?

    Sub test() Dim shl As Object Dim wnd As Object Set shl = CreateObject("Shell.Application") For Each wnd In shl.Windows() Debug.Print wnd.LocationURL Next Set shl = Nothing End Sub ----------------------------------------- これを実行するとIEのURLは取得できますが 画像のようにタイトル部分の文字列を取得したいです。 LocationURLをLocationnameに変えたらエラーになりました。 ご教授よろしくお願いします。

  • 親フォルダを取得したい

    Sub test1() Dim mystr As String mystr = ActiveWorkbook.Path End Sub これだと、現在のアクティブブックのファイル名以外のパスが取得できるのですが、 mystr = ActiveWorkbook.Parent.Path にすると、なぜか C:\Program Files (x86)\Microsoft Office\Office14 が返ります。 ActiveWorkbook.Path の返り値が C:\新しいフォルダー だとしたら、 C: のみが取得されるコードが知りたいのですが、 ActiveWorkbook.Parent.Path ではダメなようなので、正しいコードを教えてください。

  • EXPLORERで開いているフォルダがどこかを知りたいです VB.NET

    Labelにフォルダのパスが入っていて、開くのボタンを押した時に すでに開いていればそれを表示させたいのですが、 エクスプローラがどこのフォルダを開いているか調べる方法で苦戦しております。 実行中のプロセスをすべて取得して、ひとずつプロセス名を調べて EXPLORERだったらメインウィンドウタイトルを取得しようと思った のですが、EXPLORERはフォルダが複数あっても1つしか出ないので この方法ではだめだと思いました。 そこで、FindWindowというAPIでLabelにある文字列を使って ウィンドウを探して特定しようと思ったのですが、 これだとC:\だった場合、ウィンドウタイトルに不明なボリューム名が 入るので、まずドライブのボリューム名を調べないとならないのかと 思っているのですが、これ以外の方法で開いているフォルダを調べて System.Diagnostics.Process型の変数に割り当てる方法がありましたら、 ご教授頂ければ幸いです。

  • VBで壁紙を取得し保存する方法

    現在VB2008でプログラムを組んでいるのですが、(VB初心者です) 現在の壁紙を取得し、そのファイルをコピーしてCドライブ直下に保存する方法がわかりません。 壁紙の取得はできました(sPathにアドレスが出る) ただそれをコピーできません。 以下のようなエラーが出ます。 パスに無効な文字が含まれています。 ソースコードは以下の通りです。 Dim sPath As New System.String(" ", MAX_PATH + 1) SystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, sPath, 0) My.Computer.FileSystem.CopyFile(sPath, "C:\Test.bmp", True) 原因不明でよくわかりません。 教えてくださいお願いします。

  • VB.NETでのiniファイル読込について。

    .netでのiniファイル読込がうまくいきません。 何が悪いのかさっぱりわかりません。 ご指摘お願いいたします。 環境 os :xp 開発ソフト VB.NET ver 1.1.4322 SP1 ソース Private Declare Function GetPrivateProfileString Lib "kernel32" _ Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As String, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Long, _ ByVal lpFileName As String) As Long '実行ファイルパスの取得 *VB6のapp.path Shared Function GetAppPath() As String Return System.IO.Path.GetDirectoryName( _ System.Reflection.Assembly.GetExecutingAssembly().Location) End Function Function INI_DBPATH_READ(ByVal FilePath As String) As String Dim lngRet As Long   '読み込みバッファ(固定長) Dim strGetBuff As String = 256   'iniファイルより読み込む文字列のサイズ Dim intGetSize As Integer   'セクション名 Dim strSection As String   'キー名 Dim strKey As String   '読み込みエラー時の出力文字列 Dim strErr As String   'iniファイル名(フルパス) Dim striniFn As String strGetBuff = Space(256) strSection = "TIFF_FOLDER" strKey = "PATH" strErr = "失敗" striniFn = Replace(GetAppPath(), "\bin", "\Ini") & "\test.ini" intGetSize = 256 'strGetBuffに文字列を取得する lngRet = GetPrivateProfileString(strSection, strKey, strErr, _ strGetBuff, intGetSize, striniFn) '末尾のNull除去 MsgBox(Microsoft.VisualBasic.Left(strGetBuff, InStr(strGetBuff, Chr(0)) - 1)) End Function iniファイルの内容 [TIFF_FOLDER] PATH=成功

  • webページのみのURLを取得したい

    Sub testa() Dim objIE Dim myStr Set objRE = CreateObject("VBScript.RegExp") For Each objIE In CreateObject("Shell.Application").Windows myStr = myStr & vbCrLf & objIE.LocationURL Next MsgBox myStr End Sub を実行するとフォルダのパスまで取得されてしまいますが WEBページのみ取得するにはどうすればいいですか? 正規表現で”「HTML」で終わる”と言う条件を付けくわえようとしましたが htmlで終わらないサイトもあるのでダメでした。

  • VBAであるフォルダにあるフォルダを取得

    VBA初心者です。 フォルダの階層を下に掘ってパスの文字列を生成したいのですが あるフォルダの中にある全てのフォルダ名前を取得するにはどうしたらいいのですか?

  • Active Basic フォルダの絶対パスの取得

    ファイルまでの絶対パスの取得のように、自分のフォルダまでのパスを取得するにはどうしたらいいのでしょうか? D:\aaaa\bbbb\cccc\dddd\abcd.exe があって、 D:\aaaa\bbbb\cccc\dddd\ を取得したいのですが・・・ 実験してみたのですが、上手くいきませんでした。 すみませんが、やり方をご教授ください。お願いします。 ↓頑張った証 '自分自身のファイルパスを取得する Dim path[MAX_PATH] As Byte Dim FileName As BytePtr Dim MaxFilePath As Long Dim MyFileName As Long Dim AllByte As Long Dim MidAns As String GetModuleFileName(NULL,path,MAX_PATH) 'ファイルパスからファイル名を抜き出し、その大きさを取得して、引く FileName=malloc(Len(path)+1) GetFileTitle(path,FileName,Len(path)+1) MaxFilePath=Len(path) MyFileName=Len(FileName)+1 AllByte=MaxFilePath-MyFileName 'フォルダまでのパスを抜き出す MidAns=Mid$(path,1,54) free(FileName)

  • VB.NETでIEに表示中のHTMLを得る方法について

    インターネットのhtmlデータを解析したくて下記のプログラムでインターネットエクスプローラーから 表示されている内容のhtmlを取得しているのですが、 ジャバスクリプトを実行後に表示されるページの場合 マウスの右クリックで表示するソースと、ブラウザの「表示(V)」、「ソース(C)」で 表示する方法とで内容が違うのですが、マウスの右クリックの時に表示される ソースを取得したいのですが、どんなプログラムにすれば良いでしょうか? Dim IE As Object Dim Url1 As String Dim HtmlData As String Url1 = "http://www.yahoo.co.jp" IE = CreateObject("InternetExplorer.Application") With IE .Navigate(Url1) Do While .Busy = True Loop Do While .document.ReadyState <> "complete" Loop .visible = True HtmlData = .document.DocumentElement.outerHTML End With

  • ローカルに保存してあるファイルやフォルダのパスを取得して「file:/

    ローカルに保存してあるファイルやフォルダのパスを取得して「file://c:\windows\readme.txt」のようなリンクを作成してくれるツールやソフトを探しています。シフト+右クリックでファイルパスを取得してfile://(ここにペースト)で作成することも考えましたが、ファイルパスにスペースが入っているとリンクとして機能しません。このあたりを解決できる案をどなたかご教授ください。