動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About
技術記事

VBA から PowerShell に移った業務SEが、配列とハッシュテーブルで戸惑う3つの構造差

バイブス父さん
現役の業務SE
2026年6月13日11 min read
VBA から PowerShell に移った業務SEが、配列とハッシュテーブルで戸惑う3つの構造差

みなさんこんにちは!ヒロポンです!

Excelマクロ(VBA)で、業務のちょっとした集計や一括処理を回してきた。そういう業務SE、めっちゃ多いですよね。俺もそうでした。

で、それを PowerShell に移そうとすると、最初の壁が配列とハッシュテーブルDim arr() As String のノリで書くと、まず動かない。あれ、なんで動かへん??ってなるやつ。powershell 配列 ハッシュテーブル で検索してつまずくのは、だいたいここの構造差なんですよね。

先に結論を言っときます。@()(配列)と @{}(ハッシュテーブル)の2つさえ覚えれば、業務スクリプトはだいたい動く。これだけ。

この記事は、前に書いたVBA → C# 翻訳チートシートの PowerShell 版です。VBA で知ってる書き方を、PowerShell に翻訳していく。コードは Docker 上の PowerShell で実機確認済み。Windows PowerShell 5.1 でも 7 でも同じ挙動でした。

忙しい人向けに最初にまとめ

  • 配列は @() — VBA の Dim arr(2) As String のような固定長宣言は不要。可変長で、追加は $arr += x。インデックスは VBA と同じ 0 始まり。
  • 連想配列は @{} — VBA の Scripting.Dictionary 相当。参照設定なしで @{ "key" = value } と書くだけ。
  • ループは ForEach-Objectforeach — VBA の For Each 相当。PowerShell はパイプライン(|)で流す発想が加わる。

この記事の位置づけ


この記事のコードと手順は ぜんぶ動作検証済み。 安心して現場で試してくれ。
バイブス父さん

現役の業務SE。C# / SQL Server 保守の現場から、コードも人もキャリアも全部書く。 実体験ベース。

運営者について