かっきぃーの雑記帳

おもしろき こともなき世を おもしろく

文字列をテキストファイルとして保存するマクロ [すぐに使えるエクセル・マクロ集 ]

k-create.hatenadiary.com

 

100行や1000行のファイルも一瞬で出力

基本的な文章の中の一部分だけが異なるテキストを多数作りたいときには、今回紹介する「文字列をテキストファイルとして保存するマクロ」が役に立ちます。

For文などを使って繰り返せば、100行でも、1000行でも一瞬でファイルが出力できます。差し替える部分のみをExcelの表にしておき、それを読み込むこともできます。

カンマ(,)で区切っておけば、「*.csv」ファイルもできますので、エクセルで計算した値をほかのアプリケーションで読みこむといった芸もできるようになります。

今回、いつものように重要構文として、「VBA FileSystemObject ファイル操作」を紹介しようと試みましたが、十分理解できないので、無理やりまとめるのはやめて、参考になるリンクを紹介することとしました。

理解していなくても、見よう見まねでやってみるのも私流。それでもやりたいことがあれば、だいたいが何とかなります(言いわけ)。

 

サンプルコード

Sub save_textfile()
'=======================================
'
' 文字列をテキストファイルとして保存するマクロ
'
'=======================================

'textの作成
  text_sum = ""
  For i = 1 To 1000
         text_sum = text_sum & "sample" & i & vbNewLine
  Next i

  ’ ↑↑↑ ここを工夫すれば、いろいろなテキストに対応できます。


'保存するファイル名の入力
  save_text = InputBox("保存するファイル名を入力してください。", "ファイル名の入力", "index")

  If save_text = "" Then
    MsgBox "マクロを中止します"
    End
  End If

'保存するフォルダの選択
  Set obj = CreateObject("Shell.Application"). _
       browseforfolder(0, "フォルダを選択してください", 0) 'obj:保存するフォルダ名

'パスの取得
  If obj Is Nothing Then
    '未選択の場合
    MsgBox "マクロを中止します"
    End
  ElseIf obj = "デスクトップ" Then
    'デスクトップを選択した場合
    Set MyWSH = CreateObject("WScript.Shell")
    save_dir = MyWSH.SpecialFolders("Desktop")
  Else
    'その他を選択した場合
    save_dir = obj.Items.Item.Path '保存フォルダ(obj)の絶対パスの取得
  End If

  ChDir save_dir

'ファイルの保存
  save_text_name = save_text & ".txt"

  Set fs = CreateObject("Scripting.FileSystemObject")
  fs.CreateTextFile save_text_name     'ファイルの作成
  Set f = fs.GetFile(save_text_name)    'f:ファイルの絶対パス

  Set ts = f.OpenAsTextStream(2, -2) '(ForWriting, TristateUseDefault)
  ts.Write text_sum
  ts.Close

End Sub

 

重要構文

(1)文字列の足し算

文字列を繋ぎ合わせる時は「&」を使います。
数字の計算でいう「+」の代わりですね。

「text_sum = text_sum & ・・・」と数式でいうと成り立たないカタチになっていますが、『変数 text_sum に &以下のものを繋ぎ合わせて、新しい変数 text_sum にしろ』という命令になります。

固定のテキストは「 ” 」(ダブルクオーテーション)で囲みます。

(2)文字列の改行

文字列を改行するには、「vbNewLine」と書いておきます。

(3)For文を使って繰り返し文章の作成

For文と「text_sum = text_sum & ・・・ & i & ・・・」とを組み合わせることで、繰り返し文章を作成することができます。このサンプルでは i を1~1000としましたので、1000行のアウトプットが出来ていると思います。

何はともあれ、やってみるのが早いです。
「i」を「i * 2」と掛け算してみることも可能です。

コピペしていろいろ触ってみてください。

(4)ファイルの保存に関する一連の操作(難解)

説明しようと試みましたが、私自身理解しきれておらず説明が難しいため(汗)、参考となるリンクを記載しておきます。(理解をしていなくても何とかなる例)

VBA FileSystemObject ファイル操作の基礎
https://www.tipsfound.com/vba/18001

 

k-create.hatenadiary.com

 

スポンサーリンク