例えば C:\a を入力して、フォルダがなければ自動的に語尾にbの文字列を足して
C:\ab のフォルダを表示するには下記のスクリプトをどのように改良すればよいのでしょうか?
Dim s
s = InputBox("アドレスを入力")
With CreateObject("InternetExplorer.Application")
.Visible = True
.Navigate s
End With
ご存知の方がおられましたらご回答をよろしくお願いします。
No.1ベストアンサー
- 回答日時:
下記が参考になればと思います
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
フォルダの存在を先にしておき、エクスプローラへ値を渡した方が良いのではと思います
参考URL:http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
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
'----------------------------------------
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?m …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- ネットワーク 自作のサーバーPCが自宅内のネットワークに接続できない 3 2023/01/24 16:58
- Excel(エクセル) VBAで、㉑という数値が、正しく、入力できない 2 2022/07/26 20:22
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Visual Basic(VBA) 空白のセルを変更しようとした時(アクティブセル)に インプットボックスを5回出す インプットボックス 1 2023/03/14 11:01
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- その他(インターネット接続・インフラ) ブラウザにIPアドレス入力した時 1 2022/06/16 19:08
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows11のデスクトップアイコ...
-
ファイルを隠し設定していない...
-
『HP/nx6120』の“Swsetup”とい...
-
エクセル 図の挿入時の初期フ...
-
フォルダをきるって?
-
ファイル名やフォルダ名の名前...
-
(再質問)Windows11を, Win10風...
-
連動しているピクチャのフォル...
-
一つ上の、フォルダだけを消す...
-
【Wincvs】ファイルの追加がで...
-
ファイルエクスプローラーでフ...
-
USBメモリ上にフォルダが作成で...
-
リンク切れのデスクトップアイ...
-
バッチファイルで複数フォルダ...
-
バッチファイルでのフォルダ日...
-
複数フォルダをまとめて移動す...
-
差し込み印刷が他人のPCでは...
-
VBA(VBScript)のInputBoxで入...
-
del で確認なしで削除した
-
消えてしまったフォルダ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows11のデスクトップアイコ...
-
ファイルを隠し設定していない...
-
『HP/nx6120』の“Swsetup”とい...
-
複数フォルダをまとめて移動す...
-
フォルダをきるって?
-
外付けSSDや外付けHDDにはフォ...
-
del で確認なしで削除した
-
一つ上の、フォルダだけを消す...
-
フォルダのアクセス権管理について
-
Internet Explorer-11 を削除は...
-
エクセル 図の挿入時の初期フ...
-
バッチファイルで複数フォルダ...
-
ファイル名やフォルダ名の名前...
-
差し込み印刷が他人のPCでは...
-
フォルダを意図した順番に並べたい
-
"Fax"フォルダと"Scanned Docum...
-
パソコンの共有フォルダ移動に...
-
デスクトップに勝手にフォルダ...
-
消えてしまったフォルダ
-
programdataフォルダがない
おすすめ情報