前回の続きじゃ。VBSの解説じゃ。
0
    では今回は前回の Visual Basic Script で作った「test.vbs」の説明じゃ。


    難しいかも知れんが文字を置き換えるだけで応用が利くから便利じゃぞ。


    ではもう一度構文を示す。

    ↓↓↓ここから↓↓↓
    Call test()
    Sub test()
    Dim test
    test = msgbox("テストしますか?",4,"確認")
    If test <> 6 Then
    msgbox "中止します"
    WScript.Quit
    End If
    Dim objXL
    Set objXL = WScript.CreateObject("EXCEL.Application")
    strPath = (CreateObject("WScript.Shell").SpecialFolders("Desktop") & "¥test")
    strPath1 = (CreateObject("WScript.Shell").SpecialFolders("Desktop") & "¥test¥test.xls")
    Set objFS = CreateObject("Scripting.FileSystemObject")
    If objFS.FolderExists(strPath) Then

    If objFS.FileExists(strPath1) Then
    objXL.Visible = True
    objXL.Workbooks.Open(CreateObject("WScript.Shell").SpecialFolders("Desktop") & "¥test¥test.xls")
    Else
    msgbox("「test」フォルダに「test.xls」がありません。")
    End If
    Else
    msgbox("デスクトップに「test」フォルダがありません。")
    End If
    End Sub

    ↑↑↑ここまで↑↑↑


    最初の

    Call test()
    Sub test()

    と終りの

    End Sub

    これはプログラムの約束事じゃと覚えておけい!

    必ず
    Call **プログラム名**()
    Sub **プログラム名**()

    プログラム構文

    End Sub

    の格好になる。


    Dim test

    これは test という変数を作ったということじゃ。

    test = msgbox("テストしますか?",4,"確認")

    msgbox これはメッセージボックスというて「はい」「いいえ」のボタンや「キャンセル」または「OK」だけだったりする。


    どこで変更するかというと「4」という数字がそれじゃ。


    試しに4を2に置き換えてプログラムを動かしてみよ。


    「中止」「再試行」「無視」というボタンになるはずじゃ。

    時間があればいろんな数字を入れてみるがよい。


    "確認"はメッセージボックスについた題目じゃ。

    このボタンにはボタンによって決まった値があるのじゃ。

    今回は「はい」と「いいえ」じゃが、「はい」のボタンには'6’という数字が割り当てられておる。

    「はい」ボタンを押すと変数「test」には6という数字が入るのじゃ。



    そこで変数「test」が6以外の数字ならば作業を中止するというのが以下の構文じゃ。

    If test <> 6 Then →→ここはtestが6以外の数字か調べておる
                <>この記号は=(イコール)の反対じゃ
                日本語で言うと「もしもtestが6でなかったら」

    msgbox "中止します" →6でなかったら中止しますとメッセージを出す
    WScript.Quit →プログラム中止の命令じゃ。

    End If →If〜Then から始まる時は必ず最後にEnd Ifをつける
         これでIf文は終わったという印じゃ。

    If文が複数あるときは内側同士が対になる。

    If *** Then →A
      ****

    If *** Then →B
      ****

    End if →B

    End if →A

    内側同士、外側同士が対になるのでちとややこしいかも知れんな。

    End ifを付け忘れるとエラーになるぞ。



    次じゃ。

    Dim objXL

    やはりobjXLという変数を作ったのじゃが

    Set objXL = WScript.CreateObject("EXCEL.Application")

    こんどはそこにエクセルというアプリケーションをセットしたということなんじゃ。

    エクセルをセットする時は変数 objXL を使うことが一般的じゃ。

    ここは公式じゃとサラッと理解せい。




    strPath = (CreateObject("WScript.Shell").SpecialFolders("Desktop") & "¥test")


    strPath これも変数じゃがパス名を代入しておるのじゃ。



    strPath = より右の部分は本来ならば

     "C:¥Documents and Settings¥おぬしのフォルダ名¥デスクトップ¥test"

    というように各自のパソコン固有のパスになるべきところじゃがパソコンが変わるとパソコン固有のパスが使えなくなるので

    誰のデスクトップでも共用できるように作ったのが下記の構文じゃよ。

    (CreateObject("WScript.Shell").SpecialFolders("Desktop") & "¥test")

    この構文でデスクトップ上の「test」フォルダのパス名が表示される。


    strPath1 = (CreateObject("WScript.Shell").SpecialFolders("Desktop") & "¥test¥test.xls")

    これは同じくデスクトップ上の「test」フォルダの中の「test.xls」のパス名をstrPath1に代入しておるのじゃ。




    更に難しいかも知れんが

    If objFS.FolderExists(strPath) Then

    objFS.FolderExists この部分はフォルダーの有無を調べるところじゃ。

    よって上のstrPathに代入されたパス名のフォルダがあると次に進むのじゃ。

    無ければ、「デスクトップに「test」フォルダがありません。」とメッセージボックスがでる。

     Else とはIfで始まる構文で「もしそうでなければ・・こうです」という使い方をする。


    あれば、次に進み

    If objFS.FileExists(strPath1) Then

    strPath1に代入された「test.xls」ファイルがデスクトップにあれば次へ進む。


    無ければメッセージボックス「「test」フォルダに「test.xls」がありません。」とでる。


    あれば、次に進むので

    objXL.Visible = True →これはエクセルを起動するということ

    そして、ワークブックを開くということが下記の構文じゃ。
    objXL.Workbooks.Open(CreateObject("WScript.Shell").SpecialFolders("Desktop") & "¥test¥test.xls")


    そして、

    End Sub

    これで終りじゃ。


    うーん、難しかったかの。

    まあ、いろいろと構文を変えて遊んでみることが大事じゃ。

    遊び感覚が楽しく上達する秘訣じゃぞ。
    おまけ動画!
    派祖混蔵のコーナリングを見よ!



    | 派祖混蔵 | プログラムじゃ | 19:28 | comments(1) | trackbacks(0) | - | - |
    派祖混蔵さんはじめまして、Abeboboと名乗っています。
    小生、VBAの虜になり 日々精進しています。

    私の勤めているの会社で 文書管理システム(富士ゼロックス社のArcWizShare)が立ち上がり、エクセルの教習ファイルを掲載して楽しんでいます。
    そこで、どうしてもユーザーフォームを使いたいのですが、”フォルダオプション” ⇒ ”ファイルの種類” で XLS の設定で
    『同じウィンドウで開く』 の チェックをはずしておかないとユーザーフォームがうまく動きません。

    パワーユーザー以外の方は(XP です)、私が現在一台づつ設定していますが、VBSでプログラム出来るのでしょうか?
    もしかして、それが出来てしまえば延長線でウイルスにつながってしまいますか?

    お時間の取れるときに教えてください。
    *このコメントに気付いていただけないかも知れませんね。
    最新のコメントに書くのも話題が違いすぎるので・・・
    | Abebobo | 2008/11/04 4:56 PM |









    http://pcurawaza.meruta.info/trackback/451980