初歩的な質問で申し訳ございません。。
そもそもの考え方(作業手順)が間違っているのかもしれませんが
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.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するとどうでしょうか?
⇒勉強になりました!確認しチャレンジ致します。
引き続きどうぞよろしくお願いいたします。
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.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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
C++でのCRLFについて
-
選択したセルでダブルクリック...
-
エスケープ文字の復帰(¥r)と...
-
エクセルVBA 文字列領域が不足...
-
ラベル(スタティックテキスト)...
-
VBでcsv読込TextFieldParser...
-
vbsで2文字以上の空白を改行に...
-
ExcelVBAでメールを作成してメ...
-
texのchapterが改行される
-
改行コード(CR/LF)の設...
-
C++で空Enterの入力を判...
-
VBA テキストボックスの行数取得
-
改行について
-
ファイルから読み取った改行文...
-
JavaDoc コメントの改行について
-
textareaに改行を入れても、CSV...
-
awkで改行を除いて文字列を抜き...
-
VBAでCSVをExcelに取り込む時に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
COBOLの改行
-
C++で空Enterの入力を判...
-
C# DataGridViewのセルを改行禁...
-
改行について
-
Excel VBAからBeckyを起動して...
-
ExcelVBAでメールを作成してメ...
-
テキストファイルから改行コー...
-
最終行の改行について
-
グレープシティのSPREAD...
-
JavaDoc コメントの改行について
-
コンボボックスの項目中に改行を
-
エクセルVBA 文字列領域が不足...
-
JavaMail,本文中の改行について
-
ファイルから読み取った改行文...
-
【VBA】エクセルで最後の不要な...
-
JAVA Spring 改行コードを含む...
-
改行コードが半角スペースにな...
おすすめ情報
自分なりに色々調べて以下のようにしたのですが、うまくいきませんでした。
↓
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
動作はするのですが、元ファイルの状態から変化がございません。。
誤りございましたらご指摘とご教示いただけますと幸いでございます。
何卒よろしくお願いいたします。