[PR]
2025年04月12日
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
フォルダがなければ作るスクリプト
2022年03月29日
xcopyコマンドを使ったログ回収について書いたけど、
xcopyってコピー先のフォルダがないとエラーを吐くのがいまいち。
そういえば、前にフォルダがなければ作るマクロを作ったよな。。。
てなわけで、VBAのソースをVBScriptに移植することにした。
元ソースは、マイドキュメントにフォルダがなければ作るマクロ
前に作ったときは、ユーザーフォルダを取得するのにガチャガチャやってたけど、
フォルダがなければ作る処理だけなら20行いかないのね。
VBAとの違いは、変数の型を指定できないこと。
for ~ next の後にループ変数を入力できないこと。
sub ~ end subの記載のない部分が実行されること。
思った以上に簡単に移植できた。
xcopyのコマンドを作る際に、コピー先フォルダをこれで作っておけば便利かも。
以下、ソースを「MakeDirEX.vbs」などの名前で保存。
コマンドプロンプトなら「mkdir -p 」でいいんじゃね?って話はなしで!!
xcopyってコピー先のフォルダがないとエラーを吐くのがいまいち。
そういえば、前にフォルダがなければ作るマクロを作ったよな。。。
てなわけで、VBAのソースをVBScriptに移植することにした。
元ソースは、マイドキュメントにフォルダがなければ作るマクロ
前に作ったときは、ユーザーフォルダを取得するのにガチャガチャやってたけど、
フォルダがなければ作る処理だけなら20行いかないのね。
VBAとの違いは、変数の型を指定できないこと。
for ~ next の後にループ変数を入力できないこと。
sub ~ end subの記載のない部分が実行されること。
思った以上に簡単に移植できた。
xcopyのコマンドを作る際に、コピー先フォルダをこれで作っておけば便利かも。
以下、ソースを「MakeDirEX.vbs」などの名前で保存。
コマンドプロンプトなら「mkdir -p 」でいいんじゃね?って話はなしで!!
PR
VBScriptのInputBoxでキャンセル判定する方法について
2021年11月07日
前に投稿したクリップボードの内容をファイル化するVBScriptについて
https://aki.p-kin.net/Entry/25/
メールなんかを保存するのに便利でちょいちょい使っているんだけど、
別用途で提供したときに、キャンセル機能が欲しいと要望が出た。
InputBoxに何も入力しなかった場合も、キャンセルボタンを押した場合も
返り値は、空白なので制御不能。
確かにキャンセルはしたい。でも、何も入力せずに保存できた方が便利。
・・・思いついた!!
InputBoxのオプションに初期値を設定できるから
半角スペースを初期値に設定しておいて、
返り値が空白ならキャンセル、半角スペースなら「固定文字+日付」
その他の文字なら「固定文字+日付+(その他の文字)」に分類しよう!
って、デフォルトの文字を最初から設定しておいてあげればいいじゃん。。。
改修か所は以下の通り。
●InputBoxにデフォルト追加。説明が不親切だったので作文。長いので定数に格納した。
●メイン処理を明確化するために、Sub main()に処理をまとめた。
●ファイル名の共通部分を定数に格納した。
以下、ソース。
https://aki.p-kin.net/Entry/25/
メールなんかを保存するのに便利でちょいちょい使っているんだけど、
別用途で提供したときに、キャンセル機能が欲しいと要望が出た。
InputBoxに何も入力しなかった場合も、キャンセルボタンを押した場合も
返り値は、空白なので制御不能。
確かにキャンセルはしたい。でも、何も入力せずに保存できた方が便利。
・・・思いついた!!
InputBoxのオプションに初期値を設定できるから
半角スペースを初期値に設定しておいて、
返り値が空白ならキャンセル、半角スペースなら「固定文字+日付」
その他の文字なら「固定文字+日付+(その他の文字)」に分類しよう!
って、デフォルトの文字を最初から設定しておいてあげればいいじゃん。。。
改修か所は以下の通り。
●InputBoxにデフォルト追加。説明が不親切だったので作文。長いので定数に格納した。
●メイン処理を明確化するために、Sub main()に処理をまとめた。
●ファイル名の共通部分を定数に格納した。
以下、ソース。
Dirコマンドの取得結果を整理するVBScript
2021年08月31日
Dirコマンドの取得結果をdir /s /b風に整理するVBScript
元々、Dirコマンドを使ってフォルダ内のファイル一覧を取得して、
エクセルを使って解析していたんだけど、
何をするにもエクセルでマクロを動かしてからだと使い勝手も悪いし、
他のエクセルを使った業務ができなくなるので
VBScriptに外だしすることにした。
エクセルバージョンはこちら
https://aki.p-kin.net/Entry/10/
※ 不具合修正。環境によってファイルサイズの末尾に「バイト」が付く場合があるので、
fSize = Trim(Replace(Mid(buf, 19, 16),"バイト",""))とするのが良いかも。
おさらい
コマンドプロンプトで以下コマンドを打つと、フォルダ内のファイル一覧を取得できる。
> Dir フォルダ名
このコマンドのよく使うオプションはこちら
/s:サブフォルダを対象にする
/a-d:ファイルのみを対象にする
/b :フルパスのファイル名のみ取得する
> ファイル名:指定したファイルに結果を上書きする
>> ファイル名:指定したファイルに結果をアペンドする
/b形式は加工しやすいけど、ファイルのサイズや更新日時を取りたい。。。
というわけで、「Dir /s /a-d フォルダ名 > ファイル名 」のコマンドで取得して、
ドラッグドロップすると/b形式に変換するVBScript。
それにしても、VBScriptはデバッグしにくいなー。
ソースの中身をテキストファイルにコピペして、.VBSの拡張子で保存。
Dir /s /a-dの結果をドラッグドロップすると、/bっぽく整理して出力。
ファイルサイズの出力等の設定をオプション定数に出した。
以下、ソース。
元々、Dirコマンドを使ってフォルダ内のファイル一覧を取得して、
エクセルを使って解析していたんだけど、
何をするにもエクセルでマクロを動かしてからだと使い勝手も悪いし、
他のエクセルを使った業務ができなくなるので
VBScriptに外だしすることにした。
エクセルバージョンはこちら
https://aki.p-kin.net/Entry/10/
※ 不具合修正。環境によってファイルサイズの末尾に「バイト」が付く場合があるので、
fSize = Trim(Replace(Mid(buf, 19, 16),"バイト",""))とするのが良いかも。
おさらい
コマンドプロンプトで以下コマンドを打つと、フォルダ内のファイル一覧を取得できる。
> Dir フォルダ名
このコマンドのよく使うオプションはこちら
/s:サブフォルダを対象にする
/a-d:ファイルのみを対象にする
/b :フルパスのファイル名のみ取得する
> ファイル名:指定したファイルに結果を上書きする
>> ファイル名:指定したファイルに結果をアペンドする
/b形式は加工しやすいけど、ファイルのサイズや更新日時を取りたい。。。
というわけで、「Dir /s /a-d フォルダ名 > ファイル名 」のコマンドで取得して、
ドラッグドロップすると/b形式に変換するVBScript。
それにしても、VBScriptはデバッグしにくいなー。
ソースの中身をテキストファイルにコピペして、.VBSの拡張子で保存。
Dir /s /a-dの結果をドラッグドロップすると、/bっぽく整理して出力。
ファイルサイズの出力等の設定をオプション定数に出した。
以下、ソース。
テキストファイルの文字列を置換して上書きするVBScript
2021年05月21日
2022/7/7追記
より汎用性の高いソースができたので、ご紹介。
指定したテキストファイルの文字列を置換して、別名保存(上書き)するVBScript
SQLを操作できるフリーソフト「CSE」を使ってSELECT結果をCSV出力すると、
ダブルコーテーション「"」が付いてしまう。
ダブルコーテーションが付いていると既存のツールが動作しないので、
テキストファイルのダブルコーテーションを削除するVBScriptを作ってみた。
また、SELECT結果をエクセルに張り付けるため、
カンマをTABに置換するVBScriptも作った。
ソースは同じで置換する文字が違うだけなので、片方のみソースを掲載。
さんざん使いまわしているファイルをドラッグドロップで動く処理が長いが、
実際の処理はあんまり長くない。
ファイルを編集して上書き保存のやり方がわからず、
テキスト出力して名前を付けて保存の処理にした。
以下、ソース。
より汎用性の高いソースができたので、ご紹介。
指定したテキストファイルの文字列を置換して、別名保存(上書き)するVBScript
SQLを操作できるフリーソフト「CSE」を使ってSELECT結果をCSV出力すると、
ダブルコーテーション「"」が付いてしまう。
ダブルコーテーションが付いていると既存のツールが動作しないので、
テキストファイルのダブルコーテーションを削除するVBScriptを作ってみた。
また、SELECT結果をエクセルに張り付けるため、
カンマをTABに置換するVBScriptも作った。
ソースは同じで置換する文字が違うだけなので、片方のみソースを掲載。
さんざん使いまわしているファイルをドラッグドロップで動く処理が長いが、
実際の処理はあんまり長くない。
ファイルを編集して上書き保存のやり方がわからず、
テキスト出力して名前を付けて保存の処理にした。
以下、ソース。
日付のフォルダを作るVBscript2
2021年05月21日
だいぶ前に日付のフォルダを作るVBScriptを作った。
https://aki.p-kin.net/Entry/24/
業務ではちょいちょい使っていて、思うことがある。
フォルダ作ったんなら開いてよ!!
てなわけで、改良してみた。
参考になったのがこのサイト
'https://rakugakiman.com/archives/2258
フォルダを開く処理って1行で表現できるのね。
使いやすさを考えて、1行表現ではなくモジュールに飛ばすことにした。
以下、ソース。
https://aki.p-kin.net/Entry/24/
業務ではちょいちょい使っていて、思うことがある。
フォルダ作ったんなら開いてよ!!
てなわけで、改良してみた。
参考になったのがこのサイト
'https://rakugakiman.com/archives/2258
フォルダを開く処理って1行で表現できるのね。
使いやすさを考えて、1行表現ではなくモジュールに飛ばすことにした。
以下、ソース。