レガシーIT技術たん (やや古め・従来のテクノロジーや既に枯れたプログラミング関連の学術たん見習いbot)
legacy-it-tan.bsky.social
レガシーIT技術たん (やや古め・従来のテクノロジーや既に枯れたプログラミング関連の学術たん見習いbot)
@legacy-it-tan.bsky.social
タイプライターでコーディング。Windows等で昔から使われている技術( #コマンドプロンプト ・ #BAT ・ #MSDOS , #WSH ・ #JScript ),オフラインやローカルで使用できるオフィス製品( #Word ,エクセルの #Excel関数 , #ExcelVBA ), #レガシー に分類されるモダンではないWeb技術など。昔からある物をおもなテーマにしています。特別にレガシーなわけではないと思われるIT技術については、 @i-t-tan.bsky.social を参照。
#ブラウザの自動操作 51

Selenium VBA (WebDriver) で
ページ上からDOM要素を取得する際

セレクタ文字列の後ろに…
① 何も指定しないと,デフォルトでdocumentを起点にサーチする.
② DOM要素を引数に渡すと,その要素の内部でサーチする.

②の場合,引数は
WebElement型として宣言する.
September 17, 2026 at 2:39 PM
#ExcelVBAマクロを使いこなす 70

セル範囲のコピペ

' 1行目をコピー
sheet1.Range( _
sheet1.Cells(1,1), _
sheet1.Cells(1,5) _
).Copy

' 2~100行目に書式のみ貼り付け
sheet1.Range( _
sheet1.Cells(2,1), _
sheet1.Cells(100,5) _
).PasteSpecial Paste:=xlPasteFormats
September 17, 2026 at 1:09 PM
#コマンドプロンプト・BATを使いこなす 102

BATで「数値の0埋め」を実装してみる
https://language-and-engineeri...

遅延展開された環境変数は
% ではなく ! で囲む。

%%i はforコマンドの引数だとする。
set hoge=%%i

rem 10より小さければ0埋めして変数格納
if %%i LSS 10 (
set hoge=0!hoge!
)
September 17, 2026 at 11:38 AM
#PHPでコーディング 31

DateTimeオブジェクト同士の差分を
diffで計算すると,
返り値はDateIntervalオブジェクト。

DateInterval クラス
https://www.php.net/manual/ja/...

$y, $m, $d, $h, $i, $s
というプロパティに加え
年や月をまたいで差をとる $days があるが,
$months や $years は無い。
September 17, 2026 at 10:08 AM
#Windowsパソコンのメンテナンス 24

サウンドコントロールパネルの録音タブに
ステレオミキサーが無い場合,
右クリック→無効なデバイスの表示
をしてみよう。

それでも表示されなければ
そのPCにはステレオミキサーが無い。
(デバイスドライバとして
追加インストールできる場合もある)
September 17, 2026 at 8:39 AM
#ExcelVBAマクロを使いこなす 69

セルを選択状態にする:

まず先に,
そのセルが存在するシートを
アクティブにしてからでないと
「Selectが失敗しました」のエラーになる。
https://www.officepro.jp/excel...

sheet1.Activate
sheet1.Cells(1, 1).Select
September 17, 2026 at 7:39 AM
#Excel関数を使いこなす 22

【Excel関数 一発ネタ】

=INDEX( A1:XFD1048576, 行番号, 列番号 )
=INDIRECT( ADDRESS( 行番号, 列番号 ) )

この「シート全体」を表す
A1:XFD1048576

英字で列指定せず,
行番号と列番号だけで美しく書けないか?

→ R1C1形式なら
R1C1:R1048576C16384 ですね!
September 17, 2026 at 6:09 AM
#ブラウザの自動操作 50

Selenium VBA (WebDriver) で,
CSSセレクタで取得した
DOM要素の配列(コレクション)を
For文でスキャンするサンプル:

Set elems = driver.FindElementsByCssSelector("CSSセレクタ")
For i = 1 To elems.Size
Set elem = elems.Item(i)

Next i
September 17, 2026 at 4:39 AM
#コマンドプロンプト・BATを使いこなす 101

バッチファイル内で
環境変数の「遅延展開」を
避けて通れない場合もある。

どんな場合かというと
「繰り返し動的に変数の値が書き換わる」
ようなケース。

例えば
forコマンドによる繰り返しループ中で
変数を毎回変更し,連番を生成する等。
September 17, 2026 at 1:39 AM
#AviUtlで動画編集する方法 18

・再生ウィンドウで
再生ボタンを押すと
動画の再生が始まり,一時停止も可能。

・タイムラインウィンドウ上で
動画ファイルの途中のタイミングを選択し,
右クリック→分割 を選び
不要な側を
右クリック→削除すれば
動画をカットできる。
September 17, 2026 at 12:08 AM
#ExcelVBAマクロを使いこなす 68

セルの行高を調整する際,
Excelで設定可能な
最大の行高を超えてしまうと,
「Range クラスの RowHeight プロパティを設定できません」
というエラーメッセージが出る。

https://agrius-akita.hatenablo...

最大の行高は409(ポイント)
September 16, 2026 at 10:09 PM
#コマンドプロンプト・BATを使いこなす 100

「重複しないファイル名を探索して保存」という処理
https://language-and-engineeri...

BATだけで実現できます

・if existで既存ファイルを探知。

・存在すれば,重複回避のため
gotoでファイル名をつけ直す。

・goto先では算術演算によりカウンター増加。
September 16, 2026 at 8:39 PM
#PHPでコーディング 30

$dt1 = new DateTime("2020-02-29 12:34:56");
$dt2 = new DateTime("2017-05-01 00:00:00");

$df1 = $dt1->diff( $dt2 );
echo $df1->y . "," . $df1->m;
→ "2, 9"

$df2 = $dt2->diff( $dt1 );
echo $df2->y . "," . $df2->m;
→ "2, 9"

2年9か月差ということ。
September 16, 2026 at 6:08 PM
#Windowsパソコンのメンテナンス 23

ボイスレコーダーなどのソフトで
PC内で録音操作をする際,
Windowsの
設定→デバイス→サウンドの設定→サウンドコントロールパネル→録音タブ
の中から録音対象を選べる。

ここでマイクを選ぶと,
マイク以外のデスクトップ上の音声は録音されない。
September 16, 2026 at 4:08 PM
#ブラウザの自動操作 49

JSに
document.querySelectorAll("CSSセレクタ")
という構文があるので
XPathよりCSSセレクタのほうが
見慣れているかもしれない。

Selenium VBA (WebDriver) で
CSSセレクタで取得した要素の配列は
WebElementsというコレクションに格納され
For文でスキャン可。
September 16, 2026 at 12:39 PM
#ExcelVBAマクロを使いこなす 67

行高を調整

AutoFitだと
セル内容の最終行が欠けたりする。
ゆとりをもたせるため+10する

' row_num: 行番号
txt_sheet.Rows(row_num).AutoFit
txt_sheet.Rows(row_num).RowHeight = txt_sheet.Rows(row_num).RowHeight + 10

https://www.tipsfound.com/vba/...
September 16, 2026 at 10:39 AM
#コマンドプロンプト・BATを使いこなす 99

バッチファイルで計算処理:

set コマンドの /a オプションを使えば
コマンドプロンプトでも算術演算が可能!
※ただし整数限定

rem 変数に1をセット
set CNT=1
echo %CNT%
→1

rem 算術演算で1を足す
set /A CNT=%CNT%+1
echo %CNT%
→2
September 16, 2026 at 9:38 AM
#AviUtlで動画編集する方法 17

・AviUtl本体のウィンドウの右下の
一番右の「 →| 」のボタンを押すと
タイムライン上で
動画の終了位置をセットできる。

・動画の開始位置から
終了位置までの間は,
タイムラインのものさしみたいな目盛りの部分で
水色の範囲として表示される。
September 16, 2026 at 8:09 AM
#コマンドプロンプト・BATを使いこなす 98

BATで変数の「遅延展開」
https://language-and-engineeri...

けっこう面倒。
書き方:

rem forループ内の環境変数を遅延展開する
SETLOCAL enabledelayedexpansion

~forループ~

ENDLOCAL
September 16, 2026 at 6:39 AM
#ExcelVBAマクロを使いこなす 66

1列目内で
最後にデータが存在する(空白でない)セルの
行番号を取得
last_rownum = sheet1.Cells( sheet1.Rows.Count, 1).End(xlUp).Row

Rows.Countでシート内最終行を指定し
そこからxlUpで上方向にジャンプ。
データが存在する範囲の下端に到達する。
September 16, 2026 at 5:09 AM
#PHPでコーディング 29

$dt1 = new DateTime("2019-01-01 00:00:00");
$dt2 = new DateTime("2020-02-29 12:34:56");
$dt_diff = $dt1->diff( $dt2 );

// 年や月をまたいだ日付の差分
echo $dt_diff->days;
→424

// 日だけに注目した差分
echo $dt_diff->d;
→28
September 16, 2026 at 4:08 AM
#ブラウザの自動操作 48

Selenium VBA (WebDriver) で
XPathではなく,
CSSセレクタで要素を取得する方法:

driver.FindElement(By.XPath, "XPath文字列")

driver.FindElement(By.CssSelector, "CSSセレクタ文字列")

driver.FindElementsByCssSelector("CSSセレクタ文字列")→複数要素
September 16, 2026 at 2:38 AM
#Excel関数を使いこなす 21

「セルの番地」を
行番号と列番号で指定したい場合,
ADDRESS関数やINDEX関数で指定可能。

では,「セル範囲」を
行番号と列番号で指定するには?

https://docs.grapecity.com/hel...
表示設定がR1C1形式なら
A1:B10 を
R1C1:R10C2 のように
行番号と列番号で表記できます。
September 16, 2026 at 12:38 AM
#プログラミング言語・ランキング

世界人気ランキング
「TIOBEインデックス」2020年
https://www.atmarkit.co.jp/ait...

1 C言語
2 Java
3 Python
4 C++
5 C#
6 VB
7 JavaScript
8 PHP
9 SQL
10 R言語 (※前回21位から急上昇)
11 Swift
12 Go言語
13 MATLAB
14 アセンブリ
15 Ruby
September 15, 2026 at 11:38 PM
#ExcelVBAマクロを使いこなす 65

頻出パターン:
セル内の "一部の文字列" だけ
フォントの色を変えたい

https://computer-technology.ha...

・条件付き書式を使えば
セル "全体" のフォント色を
自動的に変化させることは可能

・セル内の一部の文字列色を変えるには,VBAが必要

・Excel関数では無理
September 15, 2026 at 10:38 PM