6.[PG2]Excelで、ファイル一覧作成し、ファイル名変更してみよう.part2
こちら第6回「プログラマー養成講座」のパート2になります!
目次はこちらからご参照下さい!
ひさき実践
先週はプログラムはほとんどネット上からコピペしただけだったのに、今回は難しいような・・・。
まだ、仕様を確認してていいんですよね?
とはいえ、確認も何も、手を動かさないと、ひさきからは質問もでないかも・・・。もうはじめちゃおうかと思います!
とりあえず、「VBS ファイル一覧」で検索してみます。
・・・
このサイトのソースを実行してみますか
Option Explicit
Dim objFileSys
Dim objFolder
Dim objFile
'ファイルシステムを扱うオブジェクトを作成
Set objFileSys = CreateObject("Scripting.FileSystemObject")
'c:\temp フォルダのオブジェクトを取得
Set objFolder = objFileSys.GetFolder("C:\temp")
'FolderオブジェクトのFilesプロパティからFileオブジェクトを取得
For Each objFile In objFolder.Files
'取得したファイルのファイル名を表示
WScript.Echo objFile.Name
Next
Set objFolder = Nothing
Set objFileSys = Nothing
むむ、駄目っぽいでした。
行:11
文字:1
エラー:パスが見つかりません。
コード:800A004C
ソース:Microsoft VBScript 実行時エラー
う、ちょっと師匠が怒ってる・・・!?
'Set objFolder = objFileSys.GetFolder("C:\temp")
Set objFolder = objFileSys.GetFolder("C:\work\VB")
これでOKかな。実行してみます!
・・・
これ、1ファイルずつメッセージが表示されちゃいますね。これは1画面で見れるようにするのはプログラムしないと駄目なのかな。他のサンプルプログラムを探してみます。
むむむ、サンプルプログラムは結構ありましたが、ほとんどメッセージボックスで1ファイルずつ表示するか、テキストファイルを作成して書き出すみたいなのしかないです・・・。
うーん、テキストファイルに出力していって、全部テキストファイルに出した後に、テキストファイルを読み込んで表示するとかでしょうか?
そうですね。自分が感覚で話しているので、なんとなくで話しましたけど、ちゃんと文字に変えて言われると確かに「情報の保存」「情報の出力」がしたいんですね。
はじめての変数
数学の授業で出る「変数」とは違うんですか? Y=X+1とかのやつ
わかりました!
'msgbox "VB"
'宣言
Dim strMsg
'初期値設定
strMsg = ""
'計算処理や利用1
strMsg = "この変数は文字列です"
'計算処理や利用2
strMsg = strMsg & vbLF & "2行目に追加したい"
'計算処理や利用3
msgbox strMsg
いま、師匠が書いているときに検索しようと思ったんですけど、検索ワードを考えていたら書き終わっていたようで・・・。実行してみます!
(・・・)
ちゃんと動きました!
これが、余に言う「無限ループって怖くね?」のループだったのですか・・・。
Option Explicit
'宣言
Dim objFileSys
Dim objFolder
Dim objFile
Dim strMsg
'ファイルシステムを扱うオブジェクトを作成
Set objFileSys = CreateObject("Scripting.FileSystemObject")
'c:\temp フォルダのオブジェクトを取得
'Set objFolder = objFileSys.GetFolder("C:\temp")
Set objFolder = objFileSys.GetFolder("C:\work\VB")
'初期値設定
strMsg = ""
'FolderオブジェクトのFilesプロパティからFileオブジェクトを取得
For Each objFile In objFolder.Files
'取得したファイルのファイル名を表示
'WScript.Echo objFile.Name
strMsg = objFile.Name
Next
Set objFolder = Nothing
Set objFileSys = Nothing
こんな感じでしょうか。あれ、ダブルクリックしても何も起こらない・・・?なんでだろう?
あ、そうか。そこも1ファイルごとに実行されているのをとっちゃったのか。あれ、でも、どこに入れればいいんだろう・・・?
ありがとうございます、じゃぁこんな感じでしょうか!
Option Explicit
'宣言
Dim objFileSys
Dim objFolder
Dim objFile
Dim strMsg
'ファイルシステムを扱うオブジェクトを作成
Set objFileSys = CreateObject("Scripting.FileSystemObject")
'c:\temp フォルダのオブジェクトを取得
'Set objFolder = objFileSys.GetFolder("C:\temp")
Set objFolder = objFileSys.GetFolder("C:\work\VB")
'初期値設定
strMsg = ""
'FolderオブジェクトのFilesプロパティからFileオブジェクトを取得
For Each objFile In objFolder.Files
'取得したファイルのファイル名を表示
'WScript.Echo objFile.Name
strMsg = objFile.Name
Next
'変数をメッセージ表示
WScript.Echo strMsg
Set objFolder = Nothing
Set objFileSys = Nothing
あれ、1ファイルしかでない。(・・・・)。
あ、ここかな。「計算処理や利用2」みたいにすればいいのかな。
できたかも!?
'取得したファイルのファイル名を表示
'WScript.Echo objFile.Name
'strMsg = objFile.Name
strMsg = strMsg & vbLF & objFile.Name
できましたのですが、ちょ、ちょっと休憩させて頂いていいでしょうか。
ありがとうございます。
というわけで、へとへとになったのでpart3に続きます!
この記事が気に入ったらサポートをしてみませんか?