ここから本文です

.vbs の 「 With 」 の使い方ですが次など、解説は あるのですが、見てもよく分か...

tec********さん

2019/1/2211:00:56

.vbs の 「 With 」 の使い方ですが次など、解説は
あるのですが、見てもよく分かりません!

http://vbscript.web.fc2.com/sec08_01.html
http://excel-ubara.com/excelvba1/EXCELVBA351.html

やさしく 教えて下さい。

閲覧数:
70
回答数:
2

違反報告

ベストアンサーに選ばれた回答

bas********さん

2019/1/2211:11:29

まず、オブジェクトってわかりますか?

VBScriptとかは基本的に

オブジェクト.メソッド

となっています。

もちろん、

オブジェクト.メソッド.メソッド.メソッド.メソッド

のような感じの場合もありますが。

例:
Dim n
Dim obj
Set obj = Class1
n = obj.method1( 1,2 )

のような感じ。

With ステートメントは この objを省いた形で書ける。

With obj
____n = .method1( 1,2 )
End With

のように。

With 直後の オブジェクトが持つメンバ ( フィールド, メソッド ) にアクセスしやすくする。

ただそれだけです。

  • 質問者

    tec********さん

    2019/1/2211:45:01

    とりあえず、ありがとうございます。

    う~~ん、もう一つ理解できない、、、、

    極めて簡単な、 (例えば) This is a pen. 的な、
    例文をお示し頂けませんか? 恐縮ですwww

  • その他の返信(4件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

lin********さん

2019/1/2212:25:34

Set so = CreateObject("Scripting.FileSystemObject")
With so.OpenTextFile("D:\Sample.txt", 2, True)
.WriteLine "abc"
.Close
End With
Set so = Nothing

簡単な説明です。

Set so = CreateObject("Scripting.FileSystemObject")

「Windows」のファイルやフォルダ、テキストファイルを扱う機能を読み込んでいます。

With so.OpenTextFile("D:\Sample.txt", 2, True)

「D」ドライブに「Sample.txt」というテキストファイルを「書き込み専用(=「2」)」で「新規作成(=「True」)を許可」しています。

この新規作成した「Sample.txt」について「With」していますから、

so.OpenTextFile("D:\Sample.txt", 2, True).WriteLine "abc"
so.OpenTextFile("D:\Sample.txt", 2, True).Close

と記述していることになります。

すなわち、さしあたりは、「With」を使うと、「.」の前の部分を省略でき、便利なのと、何度も参照を繰り返さないことで、処理速度も向上するそうです。

次に、この「.」の前の部分を、「オブジェクト」といいます。

「オブジェクト」というと、エクセルなら「ブック」も「セル」などのような具体的な「物」が「オブジェクト」です。

また、「Set ~」したものも「オブジェクト」です。

今回の場合でしたら、「CreateObject("Scripting.FileSystemObject")」というような「機能」も「オブジェクト」です。

そして、この「オブジェクト」は、「~.・・・」の「~」に当たる部分です。

エクセルの「VBA」で説明すると、「Range("A1").Value」(=「セルA1の値」)の「Range("A1")」の部分が「オブジェクト」です。

セル「A1」の「値」ですから、セル「A1」の情報の中から「値」を知りたいときに、「.Value」となりますし、「フォント」の情報を知りたければ、「.Font.Name」とすれば、「フォントの名前」、「.Font.Color」なら、「フォントの色」の情報が引き出せます。

この場合の「オブジェクト」は「情報の集まり」と考えると分かりやすいかも知れません。

「Range("A1")」には、「値」や「フォント」、「フォントの色」などさまざまな情報がひとつにまとまった、「情報のかたまり」で、「オブジェクト」です。

その「情報」の中から知りたい情報を「.~」で引き出すのです。

また、いろいろな「機能(=たとえば「Scripting.FileSystemObject」)の場合も同じです。

Set so = CreateObject("Scripting.FileSystemObject")
Set tx = so.OpenTextFile("D:\Sample.txt", 2, True)

まず、「Windows」のファイルやフォルダ、テキストを扱う機能を「so」にセットしておきます。

これで、「so」には、「Scripting.FileSystemObject」の機能が読み込まれた、という感覚です(正確には違うと思いますが、感覚的には、そう思うと理解しやすいと思います)。

その機能(「so」)の中の「テキストファイル」を開く機能を呼び出すのが「OpenTextFile()」です。

そして、この「.」の前の部分=「オブジェクト」を省略して記述できるのが、「With ~ End With」です。

「オブジェクト」を説明したサイトは、きっとたくさんあると思います。

当然、理屈できちんと理解できるのに越したことはないのですが、「感覚」として理解できないと、理屈の理解は「言葉としては理解できる」だけになってしまいます。

まずは、感覚的に「こんな感じなのかな?」と分かってくると、理屈でも理解が進むと思います。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる