![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
初歩的な質問で申し訳ございません。。
そもそもの考え方(作業手順)が間違っているのかもしれませんが
VBAにて以下を実現したいのですが、③がどうしてもうまくいきません。。
①数千行あるエクセルファイルを200行毎に分割してシートに分ける。
②分割したシートを全てtxtファイル(1ファイルづつ)に変換して同フォルダ内に保存する。
③保存したtxtファイル(複数)の末尾の改行を削除して上書き保存する。
※VS CODEの一括変換も試みたのですが、うまくいきませんでした。
③でファイル指定し、指定したファイルの中でtxtファイルのみ③を実行できる術はありますでしょうか。
※業務で使用する作業シート作成で、アップロード先のシステムが最終行の改行にエラーを返すもので、、
↓以下のような内容です。
・・・・・・・・・・・・・
111-11-1111-1111 0
222-22-2222-2222 0
333-33-3333-3333 0
・
・
・ ←200行目
←この最後の改行を複数のtxtファイル(フォルダ指定)に一括削除を行いたい。
・・・・・・・・・・・・・
申し訳ございませんが、ご教示何卒よろしくお願いいたします。
No.3
- 回答日時:
質問者さんに補足していただいたコードを修正しましたので、
No.2は無視して下記で試してみてください。
Sub 末尾改行一括削除()
Dim myPath As String
Dim myFile As String
Dim myFSO As Object
Dim myRE As Object
Dim myTXT As String
On Error Resume Next
myPath = ThisWorkbook.Path
myFile = Dir(myPath & "\" & "*.txt")
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set myRE = CreateObject("VBScript.RegExp")
Do Until myFile = ""
Debug.Print myPath & "\" & myFile
With myFSO.OpenTextFile(myPath & "\" & myFile)
myTXT = .ReadAll
.Close
End With
myRE.Pattern = vbCrLf + "$"
myTXT = myRE.Replace(myTXT, "")
With myFSO.OpenTextFile(myPath & "\" & myFile, 2)
.Write myTXT
.Close
End With
myFile = Dir()
Loop
Set myFSO = Nothing
End Sub
No.2
- 回答日時:
返事遅れてすみません。
これで動作しますでしょうか?
(ファイル名パス部分やループ処理は追加変更してください)
Sub 末尾改行一括削除()
a = "D:\Sample.txt"
Dim myFSO As Object
Dim myTXT As String
Dim RE As Object
Set myFSO = CreateObject("Scripting.FileSystemObject")
With myFSO.OpenTextFile(a)
myTXT = .ReadAll
.Close
End With
Set RE = CreateObject("VBScript.RegExp")
RE.Pattern = vbCrLf + "$"
myTXT = RE.Replace(myTXT, "")
With myFSO.OpenTextFile(a, 2)
.Write myTXT
.Close
End With
Set myFSO = Nothing
End Sub
No.1
- 回答日時:
・その改行の改行コードは分かりますか?
例えば改行コードがCRLFなら、Chr(13)とChr(10)をReplaceするとどうでしょうか?
※txtの文字コード(UTF-8、BOM有なども分かるといいかもしれないですね。)
・txtへ保存する処理のVBAコードを教えていただくことは可能ですか?
早速のご返信ありがとうございました。
基礎情報が漏れておりお手間取らせてしまい申し訳ございません。
改行コード:CRLF
txt文字コード:UTF-8
となります。
②の処理は以下にて行っております。
MsgBox "フォルダを指定してtxtファイルに変換する"
'対象ブックをダイアログで指定する
Dim FName As String
FName = Application.GetOpenFilename _
(FileFilter:="Microsoft Excelブック,*.xls*")
If FName <> "False" Then
Workbooks.Open Filename:=FName
Else
Exit Sub 'ファイルが選択されていない場合は終了
End If
Dim ws As Worksheet
For Each ws In Worksheets '各シートに対して処理を繰り返す
ws.Activate
'元のブックと同じ階層に出力
ActiveWorkbook.SaveAs _
Filename:=ActiveWorkbook.Path & "\" & ws.Name & ".txt", _
FileFormat:=xlText
Next ws
ActiveWorkbook.Close SaveChanges:=False
MsgBox "ファイル作成が完了しました。"
End Sub
例えば改行コードがCRLFなら、Chr(13)とChr(10)をReplaceするとどうでしょうか?
⇒勉強になりました!確認しチャレンジ致します。
引き続きどうぞよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- その他(プログラミング・Web制作) フォルダ内の特定 拡張子のファイルを一括実行するBat ファイルについて 4 2022/04/17 09:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
COBOLの改行
-
JavaMail,本文中の改行について
-
秀丸の正規表現で複数行にわた...
-
C言語で改行コードを知る
-
PHPで改行を含んだ文章の切り出し
-
最終行の改行について
-
PHPで出力したHTMLのソースが汚い
-
グレープシティのSPREAD...
-
VBA初心者です。txtファイルの...
-
ExcelVBAでメールを作成してメ...
-
C言語の標準入力で改行しない方法
-
FTP受信する際、改行コードをは...
-
コンボボックスの項目中に改行を
-
改行について
-
文字列型変数に1024を超えた文...
-
C++で空Enterの入力を判...
-
エクセルVBA 文字列領域が不足...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
COBOLの改行
-
C++で空Enterの入力を判...
-
改行について
-
ファイルから読み取った改行文...
-
jsp 改行コードで改行させて表...
-
C++でのCRLFについて
-
エクセルVBA 文字列領域が不足...
-
テキストファイルから改行コー...
-
JavaDoc コメントの改行について
-
最終行の改行について
-
JavaMail,本文中の改行について
-
【VBA】エクセルで最後の不要な...
-
文の改行
-
VBAでCSVをExcelに取り込む時に...
-
ラベル(スタティックテキスト)...
-
改行コード(CR/LF)の設...
-
テキストボックス行の桁数を制...
おすすめ情報
自分なりに色々調べて以下のようにしたのですが、うまくいきませんでした。
↓
Sub 末尾改行一括削除()
Dim myPath As String
Dim myFile As String
On Error Resume Next
myPath = ThisWorkbook.Path
myFile = Dir(myPath & "\" & "*.txt")
Do Until myFile = ""
Workbooks.Open myPath & "\" & myFile
Sheets("Sheet1").Select
↓続き
Set re = CreateObject("VBScript.RegExp")
re.Pattern = vbCrLf & "+$"
result = re.Replace(strNewFileLine, "")
Set re = Nothing
DeleteCRLF = result
ActiveWorkbook.Close savechanges:=True
myFile = Dir()
Loop
End Sub
動作はするのですが、元ファイルの状態から変化がございません。。
誤りございましたらご指摘とご教示いただけますと幸いでございます。
何卒よろしくお願いいたします。