VBA初心者ですが、VBAでのテキストファイル編集で行き詰っています
やりたい内容は以下の2つです
・あるファイルのテキストで、全ての行の5桁目から8桁目までを削除したい
入力ファイルA 出力ファイルB
-----------------------------------------------
1234567890 → 123490
abcdefghijk → abcdijk
・あるファイルのテキストで、全ての行の6桁目から後ろにスペースを7桁分入れたい
入力ファイルC 出力ファイルD
------------------------------------------------
123456789 → 12345 6789
987654321 → 98765 4321
上記は、別々の作業となりますので、一連ではありませんが
それぞれを、行う方法が判りません。
VBAは始めたばかりの初心者ですが、上記内容をなんとか作りたいと思っています。
わかる方がいましたら、ご教授頂けないでしょうか?
お手数ですが、教えていただけると助かります
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
たまたま、今、こちらで作業していたら、同じような質問が出ていたので、ほんのちょっと変えただけです。
うまくいくかどうかは、良く検査されていません。理由は、桁が足らないとどうなるかとか、エラー処理がされていないからです。'//標準モジュール
Sub DelMidleChars()
'1234567890 → 123490
'abcdefghijk → abcdijk
Dim RegEx As Object
Dim c As Variant
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
.Global = True: .IgnoreCase = False
.Pattern = "^(.{4})(.{4})(.+)" 'スペース等は入れないでください。
For Each c In Selection 'マウスの選択範囲
If .test(c.Value) Then
c.Value = .Replace(c.Value, "$1$3")
End If
Next c
End With
End Sub
'//
Sub EnterSpace()
'123456789 → 12345 6789
'987654321 → 98765 4321
Dim RegEx As Object
Dim c As Variant
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
.Global = True: .IgnoreCase = False
.Pattern = "^(.{5})(.+)" 'スペース等は入れないでください。
For Each c In Selection 'マウスの選択範囲
If .test(c.Value) Then
c.Value = .Replace(c.Value, "$1" & Space(7) & "$2")
End If
Next c
End With
End Sub
No.2
- 回答日時:
VBAでやりたいって事はファイル数が多いからですか?
そうでないならテキストエディタで正規表現使用した方が楽ではないかな?
VBA自体に開いているテキストファイルの編集機能はない(と思う)ので、開いて読み込んで別名で書き出してと面倒だと思いますよ。
最近のWordは触ってないですけどWordでは通常の置換で正規表現は無理なのかな?
少なくともWordなら開いているテキストファイルの編集と上書き保存は可能でしょうけど。
No.1
- 回答日時:
正規表現を勉強してみては。
https://excel-ubara.com/excelvba4/EXCEL232.html
http://excel-mania.com/vba/regexp2.html
http://xvideos.hatenablog.com/entry/vba_regex_ex …
削除する例
pattern = "^(.{4}).{4}(.*)"
Replace(対象文字列, $1$2)
空白を入れる例
pattern = "^(.{5})(.*)"
Replace(対象文字列, $1 $2)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Excel(エクセル) Excel ある複数列に数値を入力した際に、別の列に本日の日付を入力したいです 7 2023/03/01 23:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba SelStart、SelLen教えてく...
-
【VBA】マクロの入ったファイル...
-
A列に記載されているフォルダ...
-
VBA listBoxから
-
ExcelVBA シート名を複数セルか...
-
現在のブックを閉じないで、マ...
-
Outlookの「受信日時」「送信者...
-
ユーザーフォームに別シートか...
-
VBAコンボボックスで選択した値...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
Outlookの「受信日時」「件名」...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
Excelのマクロでワードのテキス...
-
【ExcelVBA】インデックスが有...
-
VBA 別ブックからコピペしたい...
-
VBA実行後に元のセルに戻りたい
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコードを教えてください
-
【ExcelVBA】インデックスが有...
-
ExcelVBA シート名を複数セルか...
-
エクセルvbaについて
-
エクセルのマクロについて教え...
-
【VBA】マクロの入ったファイル...
-
VBA UserFormからの転記で
-
エクセルVBAの配列について
-
Excelで「Ctrl+c」、「Ctrl+v...
-
VBAコードについて教えてくださ...
-
ExcelのVBAコードについて教え...
-
Excel マクロについての相談
-
VBAで質問があります
-
VBAコードについて
-
【ExcelVBA】VBA実行でダイアロ...
-
Excel関数またはVBAでの質問に...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
Outlookの「受信日時」「件名」...
おすすめ情報