[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『行末の余計なタブを除去してテキスト保存がしたい』(むーば)
A B C D 1 い ろ は 2 あ い う え 3 一 二 4 A B C
タブ区切りのテキストファイルで保存したいのですが
行末文字以降のタブを削除した状態で保存する方法をご教授ください
VBAで処理したいです
<こうなるのを> 「_」はタブ
い_ろ_は_
あ_い_う_え
一_二__
A_B_C_
<こうしたい>
い_ろ_は
あ_い_う_え
一_二
A_B_C
< 使用 Excel:Office365、使用 OS:Windows10 >
こんにちは ^^ ↓ な感じです。他にもたくさん方法は あるかと。。。m(__)m Option Explicit Sub OneInstanceMain() Const zProgramID As String = "IJ00191.xlsm" Dim zTb As Workbook Dim i As Long Dim j As Long Dim fnm As String Dim v() As Variant Dim buf As String Dim t As Date t = Timer Set zTb = Workbooks(zProgramID) fnm = zTb.Path & "\mytabsv.txt" With zTb.Worksheets("Sheet1") v = .Cells(1).CurrentRegion.Value End With Open fnm For Output As #1 For i = 1 To UBound(v, 1) For j = 1 To UBound(v, 2) If v(i, j) <> "" Then buf = buf & v(i, j) & Chr(9) End If Next buf = Left(buf, Len(buf) - 1) Print #1, buf buf = "" Next Close #1 Set zTb = Nothing MsgBox "終了 " & Format(Int(Timer - t) / 24 / 60 / 60, "hh : mm : ss") & _ Format((Timer - t) - Int(Timer - t), ".000") & " 秒" End Sub (隠居じーさん) 2021/01/20(水) 12:48
A B C D 1 は 2 あ い う え 3 一 二 4 B C
上記のようなケースを忘れており
__は
あ_い_う_え
一_二
_B_C
のように出力可能でしょうか?
(むーば) 2021/01/20(水) 13:19
既に動作する回答を頂いていますが、こんな書き方も。 Sub test() Dim s As String, k As Long, r As Range Open "TESTFILE.txt" For Output As #1 For k = 1 To Cells(Rows.Count, 1).End(xlUp).Row Set r = Range(Cells(k, 1), Cells(k, Columns.Count).End(xlToLeft)) If r.Count > 1 Then s = Join(Application.Index(r.Rows.Value, 0), vbTab) Else s = r.Value End If Print #1, s Next Close #1 End Sub (最終行の求め方は、あなたのほうで修正してください。 要件の後出しに間に合わなかったので。)
ちなみに、普通にタブ区切りで保存してから、 正規表現が使えるテキストエディター(例:秀丸)を使って、 \t*\n を \n に置換するのが手っ取り早いかもしれません。
なお、出来上がったtextファイルの使途が不明ですが、 もし、またExcelで読み込む前提なら、 特にご要望の加工をしなくても、 開いたファイルは、右端は現状どおりのものになりますよ。 (γ) 2021/01/20(水) 13:29
隠居じーさん様 ありがとうございました。
考え方非常に参考になりました。
(むーば) 2021/01/20(水) 13:51
むーば さん みていなかったです。 すみません。 m(__)m γさん、 ありがとうございます。 m(__)mm(__)mm(__)m (隠居じーさん) 2021/01/20(水) 18:05
(γ) 2021/01/20(水) 22:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.