ファイル一覧続き テキストファイルに書き出してみました。
OfficeアプリをVBAで扱っているときは,それらが高機能であるために,あまり縛られることはないですが,
テキストに助けを求めると,いろいろと怒られるものですね。
前回のファイル一覧をテキストファイルに書き出そうとしたら,環境依存文字で怒られました。
Option Explicit call getallfilename Sub getAllFilename() Dim objFS 'As Object Set objFS = CreateObject("Scripting.FileSystemObject") Dim objWshShell ' As Object Set objWshShell = CreateObject("Wscript.Shell") Dim objFolder ' As Object Set objFolder = objFS.GetFolder(objWshShell.CurrentDirectory) Dim objFile ' As Object Dim strFileName ' As String Dim objText 'As Object Set objText = objFS.createtextfile(objFolder & "\new.txt", True, True) For Each objFile In objFolder.Files objText.writeline (objFile.Name) Next objText.Close End Sub
テキストファイルの扱いは以前から毛嫌いしているので,書けたからいいや的なコードです。
以前のコードからの変更点は
ファイルシステムオブジェクトのCreateTextFileメソッドでテキストファイルを作成します。
Set objText = objFS.createtextfile(objFolder & "\new.txt", True, True)
この部分です。
一つ目の引数は上書きオプションらしいです。今は常に上書きするように書いています。
二つ目の引数が環境依存文字にとっては大事な点になりますが,unicodeオプションみたい。
環境依存文字も使えるから普通に使ってファイル名を決めてしまっているので,ここをtrueにすることで,環境依存文字でも怒られずにテキストファイルにファイル名を書き出せました。
前のテキストに書き足すとかの処理を考えないなら,writelineは勝手に改行してくれるのでとても楽ですね。
ファイル名一覧とかめんどくさいので,いつもは SnippingToolでそのフォルダのSSを取ってWord等に貼っていましたが,
このスクリプトを同じフォルダに入れて実行するだけで一覧を作らせることができます。
望んだ機能拡張を気軽にできるし,excelやword等,立ち上げて終了させて,に少し時間がかかるのでこんな作業ならさくっとテキストに書き出させるのはいい。
FileSystemObjectってすごいんだなぁと感心する今日この頃です。
食わず嫌いはだめですね。CreateObjectで使うものにきちんと取り組んでいかないと。。
objText.Close
これって書かなくても怒られないんですが,必要なのかなぁ。
書かなくてもすみそうなものは,一行でも削ろうとしてしまうので,動くからいいじゃない派としては気になるところでした。
---
そういえばなんでVBAでどうのこうのにこだわっていたのに,飛び出してVBScriptなんだろうと自分で振り返るんですが,
今ExcelにしろPowerpointにしろ立ち上がるのがもっさりしているんですよね。
Excelは特に,職場とかだと開いてからセルに文字が入力できるようになるまでがとても長い。
ただ情報を知りたいというだけならテキストに書き出してメモ帳でさくっと開いて何にでも使えるよ,が楽な時によく出くわします。
なのでケースによってはword,powerpoint,excelを開かずに用を済ませたい。
次々に,適切なファイル名のテキストに自分好みの分類で出力していってさくさく作業したいとか,
そのテキストファイルを今度こそVBAで開いて操作したいとか
はたまた,正規表現オブジェクトとそれらテキストで最後までやってしまうとか,使えるツールが増えるとよりスマートにできそうですよね。。
いろいろできるようになりたいなぁ。