
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA セル間のリンク修正につい...
-
vba textboxへの入力について教...
-
複数のExcelファイルをマージす...
-
【マクロ】並び替えの範囲が、...
-
VBA ユーザーフォーム ボタンク...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
ワードの図形にマクロを登録で...
-
えくせるのVBAコードについて教...
-
エクエルのVBAコードについて教...
-
Excel VBA 選択範囲の罫線色の...
-
[VB.net] ボタン(Flat)のEnable...
-
VBAでCOPYを繰り返すと、処理が...
-
vbaにてseleniumを使用したedge...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
エクセルの改行について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
vba textboxへの入力について教...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
Vba セルの4辺について罫線が有...
-
【マクロ】開いているブックの...
-
複数のExcelファイルをマージす...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
[VB.net] ボタン(Flat)のEnable...
-
Excelのマクロについて教えてく...
-
【ExcelVBA】値を変更しながら...
-
改行文字「vbCrLf」とは
-
算術演算子「¥」の意味について
-
VBAでセルの書式を変えずに文字...
-
VBAの「To」という語句について
-
VB.net 文字列から日付型へ変更...
おすすめ情報