質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

2回答

2348閲覧

初心者です。Fanctionを使用して1から9までの数値を書き込む

squid_disco

総合スコア14

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2016/03/22 04:46

初心者です。Fanctionを使用して1から9までの数値を書き込む
スクリプトにつきまして。

テキストへ1から9までの数値を書き込むスクリプトを
作成中です。

以下のとおり作成していますが、書き込み処理を"Fanction(関数)"
を使用して書きたいと考えています。

作成中のスクリプトを以下に記載いたします。

Option Explicit

' **********************************************************
' オブジェクト作成
' **********************************************************

Dim objFso:Set objFso = CreateObject("Scripting.FileSystemObject")
Dim objShell:Set objShell = WScript.CreateObject("WScript.Shell")

Dim szPath:szPath = WScript.ScriptFullName
szPath = objFso.GetParentFolderName(szPath)

' **********************************************************
' ファイルオープン
' **********************************************************

Dim objOut:Set objOut = objFso.OpenTextFile(szPath & "\number.txt", 2, True)

' **********************************************************
' 1から9までtxitに書き出し
' **********************************************************

Dim i
for i = 1 to 9

objOut.WriteLine i

next

' **********************************************************
' ファイルクローズ
' **********************************************************

objOut.Close

"Fanction(関数)"の使い方について、理解に乏しいため、ご教授
いただけたら幸いです。

Option Explicit

' **********************************************************
' オブジェクト作成
' **********************************************************

Dim objFso:Set objFso = CreateObject("Scripting.FileSystemObject")
Dim objShell:Set objShell = WScript.CreateObject("WScript.Shell")

Dim szPath:szPath = WScript.ScriptFullName
szPath = objFso.GetParentFolderName(szPath)

' **********************************************************
' ファイルオープン
' **********************************************************

Dim objOut:Set objOut = objFso.OpenTextFile(szPath & "\number.txt", 2, True)

' **********************************************************
' 1から9までtxitに書き出し
' **********************************************************

Dim i
for i = 1 to 9

objOut.WriteLine i

next

' **********************************************************
' ファイルクローズ
' **********************************************************

objOut.Close

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2016/03/22 07:13

どの部分(どこの行からどこの行まで)を関数化したいのでしょうか?またそれは何故?
squid_disco

2016/03/24 09:23

otn otnさん 質問の内容が解りづらく、失礼いたしました。
guest

回答2

0

以下にて解決
質問がわかりずらく失礼いたしました。

Option Explicit

' **********************************************************
' オブジェクト作成
' **********************************************************
Dim objFso:Set objFso = CreateObject("Scripting.FileSystemObject")
Dim objShell:Set objShell = WScript.CreateObject("WScript.Shell")
Dim bFind

' **********************************************************
' ファイル作成用関数
' **********************************************************
Function funcOpen(i, szFileName)
'msgbox FileName

Dim szPath:szPath = WScript.ScriptFullName szPath = objFso.GetParentFolderName(szPath) Dim objOut:Set objOut = objFso.OpenTextFile(szPath & "\" & szFileName, 8, True) objOut.WriteLine i objOut.Close

End Function

' **********************************************************
' メイン処理
' **********************************************************
Dim i, j

Dim szFileA
szFileA = "number.txt"

Call funcFileDel(szFileA)

for i = 0 To 9
Call funcOpen(i, szFileA)
Next

投稿2016/03/24 09:25

squid_disco

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

修正依頼がスルーされているようで、質問がよくわからないのですが、貼られていたコードを元に VBScript のプロシージャである Function (値を返す関数) と Sub (値を返さない手続き)を使って書き換えてみました。

VBScript

1Option Explicit 2 3Private Const ForReading = 1, ForWriting = 2, ForAppending = 8 4 5Public Function GetParentFolderName(ByVal path) 6 Dim objFso: Set objFso = CreateObject("Scripting.FileSystemObject") 7 GetParentFolderName = objFso.GetParentFolderName(path) 8 Set objFso = Nothing 9End Function 10 11Private Sub OutputNumberFile(ByVal filename) 12 Dim objFso: Set objFso = CreateObject("Scripting.FileSystemObject") 13 Dim szPath: szPath = GetParentFolderName(WScript.ScriptFullName) 14 15 ' ****************************************************** 16 ' ファイルオープン 17 ' ****************************************************** 18 Dim objOut: Set objOut = objFso.OpenTextFile(szPath & "\" & filename, ForWriting, True) 19 20 ' ****************************************************** 21 ' 1から9までtxitに書き出し 22 ' ****************************************************** 23 Dim i 24 For i = 1 To 9 25 objOut.WriteLine i 26 Next 27 28 ' ****************************************************** 29 ' ファイルクローズ 30 ' ****************************************************** 31 objOut.Close 32 33 Set objOut = Nothing 34 Set objFso = Nothing 35End Sub 36 37' ファイル出力呼び出し 引数にファイル名を指定 38Call OutputNumberFile("number.txt")

そこそこ原型を保ちつつ、初心者向けのポイントも入れたつもりなのですが、そもそもこれで良いのかしらん?

投稿2016/03/22 13:00

ps13zier

総合スコア433

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

squid_disco

2016/03/24 09:38

返信が遅れ、失礼いたしました。 いただきました処理内容につきまして、大変参考になりました。 Functionの引数について理解がたりていませんでしたが、 不完全ですが、理解することができました。 大変ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問