VBSは始めたばかりの初心者で、自分なりに調べてはみたのですが、どうしても分からなかったので質問です。
OSはWindows10になります。
VBSで特定のフォルダ内(D:\〇〇〇\)から特定のファイル(*.xls、xlsmなどのエクセルファイル)を検索して、それを開くプログラムを書きたいです。
フォルダ内の全ファイル検索の時にはDo Loop、ファイルがエクセルファイルか判断する時には
If文を使用するのだと思ってそれで書いているのですが、そこから先で詰まっています。。。

VBSについて記載されているサイトは以下のサイトを利用しているのですが他にもお勧めのサイトなど
ありますでしょうか?
https://msdn.microsoft.com/ja-jp/library/cc39246 …

何卒よろしくお願いします。

A 回答 (3件)

こんにちは。



>VBSでIf文でOrは使えるのでしょうか・・・?
もちろん、使えます。

>VBAでは使えてるサイト見てVBSとVBAはほぼ同じだけど所々使えないものがあったりして気になってしまって・・・

似ているけれど、私にとっては、VBSは、ワンランクもツーランクも上ですね。
気がつくところは、Sub プロシージャの上のステージがある、クラスが同じステージに出でくる、
VBAとの違いで気がつくのは、文字と数値が別である。
データ型の宣言ができないない。今回の場合は、Dir 関数がない。
全角空白が、ハングになること。暗号化や実行型があること。

VBAでは、それほどWMIを使わないでしょう?しかし、今のVBScript では、圧倒的に主流になっています。また、Dynamic Wrapper を組ませることで、Win APIが使えるようになりますから、ほとんど、困るものはありません。

PHPでWin32APIを呼ぶ(Windows)
https://qiita.com/joh/items/9f54c68768e356c51157

ひとつ、私の持っているサンプル集で紹介していないものがありました。
これは日本語です。(サイトは閉鎖されているようですので、リストを取り出してしまうとよいです、自分はどうやって取り出したか、忘れましたが、ダウンローダーなどで一括で取り出せるはずです)
http://www.whitire.com/vbs/index.html

前回書いた、有償専用エディターのVBEditor は有償です。インテリセンスやデバッグが可能で、とても便利なツールなのですが、このために、お金(5,900円)を払うのはナンセンスかもしれません。もしかしたら、私にとっての伝家の宝刀・Note Pad ++ のアドインが可能なのかもしれませんが、まだ知りません。

なお、VBSの質問は、ここ(2849)か、Visual Basic(257)でも、VBScript + Hta を回答できる人間はいます。ただ、Microsoft Officeを持っているのに、Excelを操作するのに、VBSで行うという質問は、回答はしたけれども、釈然としませんでした。 VBAがあれば、そちらの方が便利で手軽だからです。
    • good
    • 0

>他にもお勧めのサイトなど


http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
wscriptと言えば、牟田口さんがいます。

https://msdn.microsoft.com/ja-jp/library/ms97109 …
スクリプティングのすべて
(ms には確か、講座があったはずですが見つかりません。)

http://www.wmifun.net/sample/
WMI Sample ここを無視できません。

http://www.vbsedit.com/
エディター(フランス人の開発)無償版は使いづらいです。
一度購入すれば、半永久的にバージョンアップが可能。
しかし、多くの有償ツールは無償化したけれども、ここはまだ有償のままです。
ここには、スニペットやサンプル(主にWMI)がかなり多くあります。


'//------------------
Const TARGETFOLDER="C:\Test1\" 'フォルダー
Dim objFS
Dim objShell
Dim objFolder
Dim objFiles
Dim ea
Dim fileName
Dim EXT
EXT =".xlsx" '拡張子
Set objFS = CreateObject("Scripting.FilesystemObject")
Set objShell = CreateObject("Wscript.Shell")
Set objFolder = objFS.getFolder(TARGETFOLDER)
Set objFiles =objFolder.Files
For Each ea In objFiles
If LCase(Right(ea.Name,Len(EXT)))=EXT Then
If InStr(1,ea.Name,"ア",1)=1 Then 'ファイル名の最初がア"
filename= ea.Path
Exit For
End If
End If
Next
If Len(filename)>0 Then
objshell.Run filename
Else
MsgBox "ファイルは見つかりません。",16
End If
'//------------------
    • good
    • 1
この回答へのお礼

様々なサイトを教えてくださりありがとうございます!
お忙しいところソースコードまで書いてくださり本当にありがとうございますっ
とても参考になりました!
残りも頑張ってみます!

もう一つお尋ねしたいことがあるのですが、VBSでIf文でOrは使えるのでしょうか・・・?
VBAでは使えてるサイト見てVBSとVBAはほぼ同じだけど所々使えないものがあったりして気になってしまって・・・
とりあえず試すだけ試してみます!本当にありがとうございました!

>No2の方
知恵袋のほうは全く見てませんでした・・・!
そちらの方も見てみます!ありがとうございます!

お礼日時:2017/11/16 03:02

Yahoo!知恵袋にならVBSの回答を良くやっている人はいますけどね。

    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング