お題は下の質問から。
https://totthi.bbs.fc2.com/?act=reply&tid=16703972
この質問の中では、「線分を1本選択する度に、その長さをクリップボードに記録する」までやってます。
EXCELへの貼付けは手動です。
今回は、EXCELへの記入まで自動でやってみます。
そして、選択する線分も、1本でも良いし数本でも良いです。
これから、紹介するVBSやマクロの使い方も上のリンクに書いてあるのと同じ要領ですので、
詳しい説明が必要な場合は上のリンクを読んで下さい。
では、VBSプログラムはここから↓
'クリップボードから文字列取得
Dim objHTML , ClipTxt , aryStr
Set objHTML = CreateObject("htmlfile")
ClipTxt = Trim(objHTML.ParentWindow.ClipboardData.GetData("text"))
If InStr(ClipTxt, "LIST") = 0 Then WScript.Quit
ClipTxt = Mid(ClipTxt, InStrRev(ClipTxt, "LIST"))
aryStr = Split(ClipTxt, vbCr)
Dim I , KeyWD
Dim ex
Set ex = GetObject(, "Excel.Application")
KeyWD = "長さ:"
For I = 0 to UBound(aryStr)
If InStr(aryStr(I), KeyWD) > 0 Then
ex.ActiveCell.Value = Trim(Mid(aryStr(I), InStr(aryStr(I), KeyWD) + Len(KeyWD)))
ex.ActiveCell.Offset(1,0).Select
End If
Next
↑VBSプログラムはここまで。
マクロはこれ。
^C^Cselect;$M=$(if,$(getvar,cmdactive),\)QAFLAGS;6;LIST;P;;COPYHIST;QAFLAGS;$(getvar,QAFLAGS);
使い方。
①任意のEXCELファイルを開いておき、値を記入したいセルにカーソルを合わせる(アクティブにする)
②マクロを実行して、線分を選択。
③VBSファイルをダブルクリック
以上です。
マクロの最後に「AI_STARTAPP・・・・・」や「(STARTAPP・・・・)」を追加すれば、
②を実行するだけで③まで行う事ができます。(方法は上のリンク内を参考に)
そうすれば、マクロの冒頭に「*」を付けて、連続モードで行う事もできます。
注意事項:
LIST出力した結果をクリップボードにコピーして、その中身を吟味して、EXCELに貼付け。をしてる訳ですが、
LIST出力には制限があり、300~400行しか表示できません。
線分を1本LIST表示するだけでも十数行使用します。
つまり、30本選択したら30本分のLISTを表示することは不可能なので、正常に取得できません。
一度に選択する本数は、よく考えましょう。
【動作検証お願いします】LIST出力した結果を、VBSを使ってEXCELに記入
- Lon
- 2022/04/13 (Wed) 16:36:38