【VBAで正規表現】字幕ファイルやテキストファイルをシート上に書き出さずにそのまま処理する超高速マクロ

VBAで対象ファイルを開かずに正規表現置換!するマクロ


ExcelVBAでExcel正規表現2回目(動画と記事)

ファイルを開かずに、Excelで正規表現置換

Youtubeなど、自動で入る動画の字幕って、英語等と比べると日本語の場合はとても精度が低いですね。
そういう時の対処は今まで、手作業の修正でした。
とても時間がかかります。そこで正規表現を使った置換をVBAで行う方法をご紹介します。

【VBAで正規表現】テキストや字幕の文字列を正規表現で修正

ファイルを開かずに、字幕修正を正規表現をつかってやってみた。
前回の字幕ファイル(srt)の修正のための正規表現置換では Excel 上にテキスト(srt)の中身を転記してから置換していました。
今回は字幕ファイルを Excel シート上に転記しないで、直接正規表現を使って置換作業をしていくというマクロをご紹介します。

【VBAで正規表現置換する動画の内容】

【動画で学べる内容】
●VBAを使用してExcelで正規表現を扱う方法
●字幕SRTファイルやテキストファイルの処理をExcelマクロで行う方法
●字幕ファイルをExcelシートに転記せずに直接処理する方法
●正規表現パターンの作成と利用方法
●Microsoft VBScript RegularExpression 5.5とMicrosoft ActiveX Data Object 6.1のライブラリーの利用方法
●UTF-8のテキストファイルの読み込みと書き込み処理の実施方法
●Replace関数を使用した文字列の置換処理
●字幕ファイルの整形と修正の自動化手法
●マクロによる作業の効率化と時間短縮の実現

動画のタイムライン

●目次
00:00 - イントロ
00:30 - テーマ紹介[Excelで正規表現を使って字幕ファイルを直接処理する方法]
01:34 - 正規表現を使う前に準備すること、参照設定
02:57 - プログラム内の変数の説明
04:23 - 正規表現オブジェクトの設定、Global,MultiLine
05:44 - ファイルパスの設定、srtファイルをUTF-8で読み込む為の設定
06:40 - 置換パターンを作る
08:06 - 結果をsrtファイルをUTF-8で書き出す
09:18- プログラムを実行する
12:28 - CODE TIME
14:22 - エンディング
15:16 - おわり

1. Excel自体では正規表現を扱えないので、扱うためには参照設定から 参照可能なライブラリーファイルの中でMicrosoft VBScript RegularExpression 5.5にチェックを入れてあげます。
もう一つの今回使うのは Microsoft ActiveX Data Object 6.1ライブラリーです。
このActiveX Data Objectは, UTF-8形式のテキストファイルを 読み込むために必要です。


Microsoft VBScript RegularExpression 5.5とMicrosoft ActiveX Data Object 6.1

Microsoft VBScript RegularExpression 5.5にチェックを入れる。

Microsoft VBScript RegularExpression 5.5、参照設定

3. Microsoft ActiveX Data Object 6.1にチェックを入れる。


Microsoft ActiveX Data Object 6.1参照設定

4. コード内で使う変数
Dim StringOutput As String というのは変換してある状態の文字列を表します。
Dim strパターン As String というのは正規表現で指定してやるパターンのこと
Dim str置換 As String というのはそれをどのような文字列に置換するかという置換先の文字列


置換処理に使うコードの変数

5. Dim regEx As New VBScript_RegExp_55.
RegularExpressionのオブジェクト,正規表現を扱うためのオブジェクトです。宣言とSetをまとめて書いている書き方です。


NAMAE-5

6. Dim stream As New ADODB.stream
先ほどのライブラリにチェックを入れた、UTF-8を使うための、Microsoft ActiveXオブジェクトですね。
Dim filePath As String
次のファイルパスは字幕ファイルを開くファイルパスのことです。


NAMAE-6

プログラムの本体

7. regEx.Global = True
というのはRegEx Objectで置換するその対象が、最初の1個だけで良い時は false。
出現する全てにおいて、置換する場合はtrue にしてあげます。


NAMAE-7
regEx.Global = True ' 全てのマッチを置換
regEx.MultiLine = True ' 複数行を処理
filePath = "D:\字幕\字幕.srt"

8. 次の
regEx.Multiline = true
はtrueに設定したことで複数行のテキストを一度に処理することができるようになります。
これがフォルスのままだと受け取ったテキストがExcelにとっては,一つのテキストなんですよね。
一つの塊として見てしまうということなんですね。
ですからここで regEx.Multiline = true ,としてやることによって一行一行の処理が行われるということです。


NAMAE-8

9. 次のファイルパスは、字幕ファイルを保存しているフォルダから字幕ファイルを開くためのパスですね。


NAMAE-9

10.次のコードこれらはStreamのオブジェクトに対するメソッドを書いてあるわけです。
Streamオブジェクトを開きなさいと,Streamオブジェクトのタイプは2番でこれはテキストデータです。
StreamのキャラクターセットはUTF-8です。
Stream.loadFromFile.filePathということでそのファイルパスからデータを読み込むという命令をしています。loadFromFileがそれですね。


NAMAE-10

11. stroutputイコールstream.readText stroutputという変数は読み込んだテキストですと,ここで設定しています。テキストを読み込んだらストリームはすぐに閉じてしまいます。


NAMAE-11

12. 続いてstrパターンを教えてやります。 これは"です$"ということで,ですの後ろに文字がないという意味ですね。
str置換はそれを何に置換するか,それは"です。"です。
続いてregex.patternは今設定したstrパターンです。
その次の行で今度はstroutputイコールこの出力するアウトプットは 正規表現regexというオブジェクトにreplace関数を使ってstroutputという読み込んだテキストをstr置換というですまるここではですまるに置換したものですよという構造ですね。


NAMAE-12

正規表現置換の終了処理

13. すべての置換が終わったら、新たにstreamオブジェクトを開いて、streamのタイプを文章に設定してstreamのキャラクターセットをutf8にセットする、そしてstreamをwriteテキストでstroutputという今ですね置換した文字列の文章なんですね。


NAMAE-13

14. stream.savetofileでこの2番の条件で保存する。 2の条件というのはファイルがない場合は新規で作成しある場合は上書きという意味です。


NAMAE-14

最後に streamオブジェクトですね。 クローズするという形で終了します。最後にメッセージボックスを表示させて処理が終わったと報告させましょう。


NAMAE-15

こちらもおすすめ