三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

複数ファイルをドラッグAndドロップでvbsへ投げ Excelでファイル名一覧 や Wordに複数画像ファイルの貼り付け VBSのコマンドライン引数 Arguments を利用

f:id:ken3memo:20220323081518j:plain
VBS の コマンドライン引数 Arguments を使用して
ドラッグAndドロップ されたファイル名を取得して、
Excelへ単純に書き込んだだけです。

www.youtube.com
https://www.youtube.com/watch?v=fH0F3vC3qpU
↑いつもの、あのあの、解説動画・・・
00:00 挨拶
00:29 1.コードの簡単な説明とテスト実演
02:03 2.ファイル名をExcelにセットしてみた
03:29 3.デスクトップなどに設置方法の実演
05:22 4.おわりの挨拶

1.コードの簡単な説明とテスト実演
ポイントは、
Arguments.Count
Arguments(n)
で簡単にドラッグAndドロップされたファイル名が取得可能
これを利用してファイル名をExcel

まずはvbsでファイル名受け取りの単体確認

'Arguments.Count と Arguments(n) で引数受け取りのテスト
'ここから
Dim nMAX, n

nMAX = Wscript.Arguments.Count
 
If nMAX = 0 Then  '引数無しの時
  WScript.Echo "引数を受け取れません" & vbCrLf & "終了しますね"
  WScript.Quit '途中終了
End If
 
For n = 0 to nMAX - 1  '配列は0からなので-1までループ
    WScript.Echo "(" & n & ")番目:" & Wscript.Arguments(n)
Next
'↑ここまでをテキストファイル XXXX.vbsで保存してテストしてみてください。

2.ファイル名をExcelにセットしてみた
ドラッグされたファイルのファイル名をExcelに書き出してみます

'ファイル名をExcelへ
'ここから
Dim nMAX, n
nMAX = Wscript.Arguments.Count
 If nMAX = 0 Then  '引数無しの時
  WScript.Echo "引数を受け取れません" & vbCrLf & "終了しますね"
  WScript.Quit '途中終了
End If
Dim excelApp
Set excelApp = CreateObject("Excel.Application")
excelApp.Visible = True
excelApp.Workbooks.Add   '新しくブックを追加
'A1セル~単純にファイル名を代入する
For n = 0 to nMAX - 1  '引数配列は0からなので-1までループ
    excelApp.Cells(n + 1, 1) = Wscript.Arguments(n)  'A列にファイル名をセットする
Next
MsgBox "処理終了 Excel を確認してください"
'ここまでをテキストファイル XXXX.vbsで保存してテストしてみてください。

3.デスクトップなどに置き 使ってみてね 設置方法の実演
デスクトップなどへの設置方法
XXX.vbsアイコンが大きいと、投げやすいので、
デスクトップに設置してみます。

3.1 メモ帳を新規起動してコードを貼り付けます
3.2ファイル名を付け保存 文字コードANSI コードにしてくだい
デスクトップに
ドロップファイルをExcelへ.vbs
など、それらしい わかりやすい名前を付けて保存します
この時、文字コードANSI にしてください。
3.3 設置後テスト確認


同じ手口で(同じvbsの受け取りで)、複数画像ファイルをWordで処理してみます

Wordに複数画像ファイルを貼り付けた例:
ソースコードは下記です。

'----  XXXX.vbs で 保存して使ってください
Dim nMAX, n

nMAX = Wscript.Arguments.Count
 
If nMAX = 0 Then  '引数無しの時
  WScript.Echo "引数を受け取れません" & vbCrLf & "終了しますね"
  WScript.Quit '途中終了
End If

Dim wdApp
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True
wdApp.Documents.Add   'Word文章の追加

For n = 0 to nMAX - 1  '配列は0からなので-1までループ

    '文字 図.1 図.2 など文字を頭に入れる
    wdApp.Selection.TypeText "図." & (n+1)
    wdApp.Selection.TypeParagraph
    '画像ファイルを挿入
    wdApp.Selection.InlineShapes.AddPicture Wscript.Arguments(n), False
    wdApp.Selection.TypeParagraph
    '画像挿入後、ファイル名をテストで入れてみた
    wdApp.Selection.TypeText "↑FileName " & Wscript.Arguments(n)
    wdApp.Selection.TypeParagraph

    wdApp.Selection.InsertNewPage  '新しいページを挿入
Next

MsgBox "処理終了 WORD を確認してください"
'ここまで

解説と実行結果は、
www.youtube.com
https://www.youtube.com/watch?v=W9X8hLrSygc
↑を見てください。



vbs
Wscript.Arguments.Count
Wscript.Arguments(n)
で、処理ファイルの一覧をドラッグAndドロップで取得できるので、
何かの処理で使ってみてください。

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)