マンガでよめる痔のこと・薬のこと

VBScriptで現在ログイン中のユーザの
「My Documents」フォルダの絶対パスを
取得する方法をご存知でしたらご教授下さい。

よろしくお願いします。

A 回答 (2件)

Set wshShell = WScript.Createobject("WScript.shell")


Set sf = wshShell.SpecialFolders
WScript.Echo sf("MyDocuments") '絶対パス
    • good
    • 0
この回答へのお礼

ありがとうございました。

上記で出来ました。(感謝です)

お礼日時:2006/03/24 13:34

process9です。



このサイトでいいかな?参考URLでみてください。

参考URL:http://www.vacant-eyes.jp/Tips/twsh.html
    • good
    • 0
この回答へのお礼

わかりやすいサイトですね。
参考にやってみます。

ありがとうございました。

お礼日時:2006/03/24 11:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

Qvbsで選択ダイアログを表示したいのですがやり方が分かりません。教えて

vbsで選択ダイアログを表示したいのですがやり方が分かりません。教えてください。
以前は以下のようにしてたのですがUser~ってところがvistaでは動作しないようです。
また、既存の処理はできれば変えたくないので以下の関数内で選択されたファイル名を返却できるようにするにはどう変更したらよいでしょうか?

Function AAAA()
Dim objDialog
Set objDialog = CreateObject("UserAccounts.CommonDialog")

objDialog.Filter = "Excel File|*.xls"
objDialog.InitialDir = "C:\"
intResult = objDialog.ShowOpen
If intResult = 0 Then Wscript.Quit

// ファイル名を返却
End Function

Aベストアンサー

UserAccounts.CommonDialog はXPだけで使える
と、記載されてましたね。
コモンダイアログ系オブジェクトはVBのライセンスが
ないと使えませんし、BrowseForFolderもファイルを
選ぶと落ちるので困ったもんです。
他のアプリケーションの力を借りるしかないと
思います。

(1)SFC mini をインストールしてAPIを実行
 SFC mini はWindowsAPIをVBSから呼び出せる
 ようにしたツールです。
 http://kandk.cafe.coocan.jp/sfcmini/
(2)Excelの機能を使う。
 Excelがインストールされていれば、以下のように
 実装できます。
 Dim A, B
 Set A = CreateObject("Excel.Application")
 B = A.GetOpenFilename("Excel File,*.xls")
 A.Quit
 Set A = Nothing
 If B <> False Then
     AAAA = B
 Else
     WScript.Quit
 End If

UserAccounts.CommonDialog はXPだけで使える
と、記載されてましたね。
コモンダイアログ系オブジェクトはVBのライセンスが
ないと使えませんし、BrowseForFolderもファイルを
選ぶと落ちるので困ったもんです。
他のアプリケーションの力を借りるしかないと
思います。

(1)SFC mini をインストールしてAPIを実行
 SFC mini はWindowsAPIをVBSから呼び出せる
 ようにしたツールです。
 http://kandk.cafe.coocan.jp/sfcmini/
(2)Excelの機能を使う。
 Excelがインストールされていれば、以下のように
 実装...続きを読む

QEXCELマクロで上書きメッセージ無しで保存する方法

EXCELマクロで上書きメッセージ無しで保存する方法をお願いします
ActiveWorkbook.SaveAs "C:\Documents andSettings\Nakatani\MyDocuments\Book1.xls"
の様にするとすでにファイルがある場合上書きメッセージが出ます
メッセージを出さずに上書きするプログラミングを教えて下さい
宜しくお願いします

Aベストアンサー

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "C:\Documents andSettings\Nakatani\MyDocuments\Book1.xls"
Application.DisplayAlerts = True

QVBSで特定の文字列が含まれる場合の処理方法

こんにちは。
自分史上初めて投稿します。

テキストファイルを簡単に操作出来るということを聞いて、さいきんVBSを勉強し始めました。
そこで、特定のファイルの中身を読み込んで配列関数を使い配列に格納した後、特定の文字列が含まれる場合には別の文字列へと変換したいと思っているのですが、正規表現が上手くいきません(汗)

どなたか助けていただけませんでしょうか?
それともそもそも正規表現が使えないなんてことはないですよね・・・?


よろしくお願いいたします。
ちなみに書いたコードは↓

Set WSHFso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim strSearchWord

Set tmpFile = WSHFso.OpenTextFile("C:\Documents and Settings\●●●\○○.txt")

Do Until tmpFile.AtEndOfStream
tmpLine = tmpFile.ReadLine
strSearchWord = strSearchWord & tmpLine & vbcrlf
Loop


Dim SearchWord
SearchWord = split(strSearchWord,"")


Select Case SearchWord(9)


'ここで『東京』というワードが含まれる場合に別処理を走らせたいのです・・・。
Case "*" & "東京" & "*"

msgbox SearchWord(10)

Case Else

msgbox SearchWord(101)

End Select

こんにちは。
自分史上初めて投稿します。

テキストファイルを簡単に操作出来るということを聞いて、さいきんVBSを勉強し始めました。
そこで、特定のファイルの中身を読み込んで配列関数を使い配列に格納した後、特定の文字列が含まれる場合には別の文字列へと変換したいと思っているのですが、正規表現が上手くいきません(汗)

どなたか助けていただけませんでしょうか?
それともそもそも正規表現が使えないなんてことはないですよね・・・?


よろしくお願いいたします。
ちなみに書いたコード...続きを読む

Aベストアンサー

配列SearchWordの要素の文字列を置換したいのでしたら下のような感じでしょうか。Select Caseステートメントでは正規表現は使えないと思います。

Windows XP SP2 + WSH VBScript 5.6で試しました。

-----
Dim strSearchWord
Dim SearchWord
strSearchWord = "東京 東京駅 西東京 西東京は東京の西 品川"
SearchWord = Split(strSearchWord," ")

Set regEx = New RegExp
regEx.Pattern = "東京"
regEx.Global = True

For ix=0 to UBound(SearchWord)
SearchWord(ix) = regEx.Replace(SearchWord(ix), "神田")
Next

WScript.Echo Join(SearchWord, " ")
-----

なお、特定の単純な文字列が含まれているか調べるには、正規表現を使わなくてもInStr関数でよさそうです。「別処理」でやりたいことの内容にもよりますが。

-----
if InStr(SearchWord(ix), "東京")<>0 then
WScript.Echo SearchWord(ix) & " は東京を含みます。"
else
WScript.Echo SearchWord(ix) & " は東京を含みません。"
end if
-----

配列SearchWordの要素の文字列を置換したいのでしたら下のような感じでしょうか。Select Caseステートメントでは正規表現は使えないと思います。

Windows XP SP2 + WSH VBScript 5.6で試しました。

-----
Dim strSearchWord
Dim SearchWord
strSearchWord = "東京 東京駅 西東京 西東京は東京の西 品川"
SearchWord = Split(strSearchWord," ")

Set regEx = New RegExp
regEx.Pattern = "東京"
regEx.Global = True

For ix=0 to UBound(SearchWord)
SearchWord(ix) = regEx.Replace(SearchW...続きを読む

QVBS パスに変数を入れたい

VBSでファイルのコピー処理を行いたいのですが、その日の日付によって、保存先フォルダを変更する必要があります。

例えば、下の保存フォルダ先を指定する文で、○○○を変数にしたりできたら良いのですが、この様にパスに変数を入れる方法ってありますか?

strCopyFolder = "Y:\abc\○○○"

Aベストアンサー

以下のように「&」で連結すればよいと思います

<例>
strFolderName = "○○○"
strCopyFolder = "Y:\abc\" & strFolderName

Qグループポリシーをレジストリで設定したい。

グループポリシーをレジストリで設定したい。

お世話になります。
Windows 7 Home Premiumを使用しているので、
グループポリシーが使用できません。

そこで、グループポリシーで有効や無効に設定できることを
レジストリで設定することができたらと思っております。

・ユーザーが訪問したwebサイトの削除の禁止
・フォームデーター削除の禁止
・履歴設定を許可しない
・インターネット一時ファイルを削除できない
・ InPrivateを無効にする

他にも色々とあると思いますが
システム管理者によって設定できることで
レジストリで設定できることがあれば教えてください。

HKEY_CURRENT_USER\Software\..................

キーを開く ××××× 値「1」

こんな感じで教えていただければと思います。
どうぞよろしくお願いいたします。

Aベストアンサー

http://oshiete.goo.ne.jp/qa/6184601.html の
回答No.2 の添付画像のpolicyの残り 10 アイテムです。
registry key ごとにグルーピングしてあります。
上段:policy、下段:valuename です。
value:はどれも 1 or 0 なので省略してあります。

※それほどレジストリにこだわるのなら *.admx , *.adml ファイルを入手したほうがいいと思います。(なにしろ数1,000のレジストリ設定があるわけですので・・・)
下記は添付画像の InetRes.admx , InetRes.adml ファイルを簡単に加工して取得したものです。
-----
レジストリ キー
HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Privacy

Cookie の削除を禁止する
CleanCookies

ユーザーが訪問した Web サイトの削除を禁止する
CleanHistory

インターネット一時ファイルの削除を禁止する
CleanTIF

InPrivate フィルター データの削除を禁止
CleanInPrivateBlocking

お気に入りサイト データの削除を禁止する
UseAllowList

終了時の閲覧の履歴の削除を構成する
ClearBrowsingHistoryOnExit
-----
レジストリ キー
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{1428A09B-1D77-40A6-8CCC-E28EC5350DDE}User\Software\Policies\Microsoft\Internet Explorer\Control Panel

フォーム データの削除を禁止する
DisableDeleteForms

パスワードの削除を禁止する
DisableDeletePasswords

インターネット一時ファイルおよび Cookie を削除できないようにする
Settings

[履歴の設定] を許可しない
History
-----
以上です。

http://oshiete.goo.ne.jp/qa/6184601.html の
回答No.2 の添付画像のpolicyの残り 10 アイテムです。
registry key ごとにグルーピングしてあります。
上段:policy、下段:valuename です。
value:はどれも 1 or 0 なので省略してあります。

※それほどレジストリにこだわるのなら *.admx , *.adml ファイルを入手したほうがいいと思います。(なにしろ数1,000のレジストリ設定があるわけですので・・・)
下記は添付画像の InetRes.admx , InetRes.adml ファイルを簡単に加工して取得したものです。
-----
レ...続きを読む

QDoEvents

VBSでDoEventsは使えないのでしょうか?

***************************
Dim ObjIE
dim i
Set ObjIE = CreateObject("InternetExplorer.Application")

ObjIE.Navigate "http://oshiete.goo.ne.jp/"
ObjIE.Visible = True

Do While ObjIE.Busy = True
DoEvents
Loop
Do While ObjIE.Document.ReadyState <> "complete"
DoEvents
Loop

Set ObjIE = Nothing
***************************
だと、エラーになりました。

Wscript.sleep 3000
ならエラーにならずにコードは動きました。

VBAならDoEventsは使えるのに
VBSで使えない理由を教えてください。

Aベストアンサー

vbsのDoEventsはSleepで代用できるから問題ないと言うことで、
vbsの仕様から除外されたのでしょう。

他にも On Error でラベルが使えませんし、
APIを呼べませんし、色々と不便な所があります。

見るとIEを操作しているようですね。
自分もVBSでIEに自動で入力してエンターを押すようなVBSを作成して、
便利に使っていますが、Windows Updateで
ある日突然エラーになり、その回避方法にまた新たな手法が必要になったりしました。
出来ないものや、ないものは回避策をいくつか研究するとよいでしょう。

Qテキストファイルから最終行の抽出

テキストファイルに出力された内容のうち、
最終行のみ抽出し、他のテキストファイルに
落とし込みたいと考えています。

DOSコマンドを使用して実現したいと思うのですが
良い方法などございましたら、ご教授ください。

宜しくお願い致します。

※OSはWindows Server 2003を使用しています。

Aベストアンサー

98SEから2003までのすべてのWindowsに標準搭載されているコマンドでFORと>(リダイレクト)を使って出来ます。

FOR /F "TOKENS=1*" %A IN ([元ネタファイル名]) DO ECHO %A > [出力先ファイル名]

 (大カッコ([ ])は必要ありませんが、普通のカッコ( () ) は必要です。)

 元ネタのファイルサイズが大きかったら少々思い処理になるかもしれませんが、所詮テキストファイルですので、極端に時間がかかるものでもないでしょう。

 なお、元ネタのファイルはSVS形式などのファイルだと思いますが、そうだとするとフィールドの区切り文字をそのデータ内に含まれないものにするといいですね。FORのなかに" "で囲まれた部分がありますが、そこに 「delims=...」などとデータ内に無い文字列を指定します。"TOKENS=1* delims=..."というようにTOKENSとはスペース区切りで追加します。
(今回、元ネタのデータがどういうものか分からないのではっきりとした答えを書きようがありません。データの形式によっては例外処理対応をする必要もあります。

 バッチで組むならもっと軽くする方法はありますね。なお、その際、FORの内部変数を%%Aとする必要がありますので気をつけましょう。今回はコマンドラインでということですので、コマンドライン1行で出来るものとしています。

98SEから2003までのすべてのWindowsに標準搭載されているコマンドでFORと>(リダイレクト)を使って出来ます。

FOR /F "TOKENS=1*" %A IN ([元ネタファイル名]) DO ECHO %A > [出力先ファイル名]

 (大カッコ([ ])は必要ありませんが、普通のカッコ( () ) は必要です。)

 元ネタのファイルサイズが大きかったら少々思い処理になるかもしれませんが、所詮テキストファイルですので、極端に時間がかかるものでもないでしょう。

 なお、元ネタのファイルはSVS形式などのファイルだと思いますが、そう...続きを読む

Qエクセル関数で日付かどうかの確認?

ワークシート関数でセル内が日付かどうか調べるものはないでしょうか?
VBAのIsDateなら存じておりますが。

Aベストアンサー

日付を表すデータは、セルの値としては、単なる数値なのですが、どういう種類のセルの書式が設定されているかを調べることはできます。
調べたいセルがA1だとして
=cell("format",A1)

"D1"になれば概ね日付だと判別できます。
時刻を含めたものにする場合は、
Dで始まることをチェックすればいいかも。
詳しくは、CELL関数のヘルプを参照してください。

QGoTo文について

VBSでGO TO 文の記述方法が
わかりません すみませんが教えて下さい。

Aベストアンサー

>使わないのが一番です。
ですし、使えない。

参考URL:http://activex.adsp.or.jp/public/iasdocs/aspdocs/ref/vbs/vbscript/200.htm


人気Q&Aランキング

おすすめ情報