docs > excel > SHELL-ish Excel VBA

SHELL-ish Excel VBA

Excel VBAを扱う。Excel VBAの制限した使い型(方)を説明する。 下に記載しているプログラムは、実行環境が無いため動作確認していない。

SHELL-ish Excel VBA

SHELL-ish(シェリッシュ) Excel VBAは、造語である。SHELL-ishであることから、シェルのようにテキストを扱うイメージ。インプットをテキストとして、アウトプットをテキストファイルとする。

シェルのパイプで繋いだ標準出力をリダイレクトでファイル出力するイメージを、Excel VBAで行う。あくまでもイメージ。

シートinputに元データを入力し、その情報を元に、処理結果をシートoutputに出力する。シートoutputの内容をファイル出力する。

ルール

使い方

  1. シートinputを作る。
  2. シートinputにインプットテキストを入力する。
  3. シートoutputを作る。
  4. “処理部分”を実装する。
  5. マクロを実行する。

型:プログラム全体

Sub proc_xxxx()
  ''' [A. 入力部分]
  ''' シートinputのA列の行数を数える。
  Dim input_ws As Worksheet: Set input_ws = Sheets("input")
  Dim max_row As Long: max_row = input_ws.Cells(Rows.Count, 1).End(xlUp).Row


  ''' [B. 出力シート準備部分]
  ''' 前回の出力が混じらないように、出力シートを初期化(セル全消去)する。
  Dim output_ws As Worksheet: Set output_ws = Sheets("output")
  output_ws.Cells.Clear 


  ''' [C. 処理部分]
  ''' inputを処理した内容を、outputに出力する。
  Dim y As Long: y = 1
  Dim i As Long
  For i = 1 To max_row
    line = input_ws.Cells(i, 1).Value

    ''' TODO:
    ''' inputのlineについて、処理を行う。
    ''' output_ws(y, 1).Valueに、処理した内容を入れていく。
    output_ws.Cells(y, 1).Value = 
    ''' output_wsに値を入れたあと、yをインクリメントしていく。
    y = y + 1
  Next i


  ''' 出力するシート名と出力ファイル名を指定する。
  ''' ファイル名が相対パスの場合は、ドキュメントフォルダへ出力する。
  Call write_file("output", "output.txt")
End Sub


Sub write_file(ByVal sheet_name As String, ByVal output_filename As String)
  Dim output_ws As Worksheet: Set output_ws = Sheets(sheet_name)

  Dim output_max_row As Long: output_max_row = output_ws.Cells(Rows.Count, 1).End(xlUp).Row

  Dim j As Long
  Open output_filename For Output As #1
  For j = 1 To output_max_row
    Print #1, output_ws.Cells(j, 1).Value
  Next j
  Close #1
End Sub

その他

2025年 12月21日 日曜日 21時52分59秒 JST