[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ある範囲のセルのデータを、一つにまとめテキスト変換及び改行削除』(たけ)
ある範囲のセルのデータを、一つにまとめテキスト変換及び改行削除
マスターデータのアップロードするのにテキストで改行無しでアップしないといけません、
エクセルで作成したもの(約500行くらい)をいつのテキストにまとめて
改行をなくさないといけません。
複数セルを選択してテキストに張り付けても改行が残ってしまいますので
なくした状態のテキストを作成できるものを検討しています。
*例えばA6からA505までのデーターがある感じです。
もしわかる方がおられましたらお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
制御文字にも対応した置換機能のあるテキストエディタを使うことはできないのだろうか? (ねむねむ) 2018/07/25(水) 16:11
>*例えばA6からA505までのデーターがある感じです Sub tset() Dim txt As String Open ThisWorkbook.Path & "\Sample.txt" For Output As #1 Print #1, Join(Application.Transpose(Range("a6:a505").Value), "") Close #1 End Sub (seiya) 2018/07/25(水) 17:18
ありがとうございます。
試してみましてファイルが出来ていました。
Rangeを広くすることができれば
汎用性が出てきますね。
一度アップしてみて問題ないか見てみますね
(さる) 2018/07/25(水) 17:33
単一列で行数が65536未満で1セルの文字数が255を超えない、且つエラー値がければOKのはずです。 (seiya) 2018/07/25(水) 17:46
やってみたのですが、1セルの文字数が255を超えていますので
Print #1, Join(Application.Transpose(Range("a6:a505").Value), "")のところでとまってしまいます。 また、条件が増えてしまったのですが、エラーコード (#N/A)が出ているところがありましてオートフィルターでフルターしていたのですがこの 状態だとフィルターで非表示になっているものも含まれてしまいます。 最初に言ってなくてすみません。 (たけ) 2018/07/25(水) 18:19
それなら
Sub test() Dim cn As Object, rs As Object Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") With cn .Provider = "Microsoft.Ace.OLEDB.12.0" .Properties("Extended Properties") = "Excel 12.0;HDR=No;IMEX=1;" .Open ThisWorkbook.FullName End With rs.Open "Select F1 From [Sheet1$A5:A50000] Where F1 Is Not Null And Not IsError(f1)", cn Open ThisWorkbook.Path & "\sample.txt" For Output As #1 Print #1, rs.GetString(, , "") Close #1 Set cn = Nothing: Set rs = Nothing End Sub (seiya) 2018/07/25(水) 19:21
データを作成しましてアップしたのですがエラーがあったので確認しましたら、
作成したテキストをエクセルで見ると改行が削除されていないみたいでした
14562422347614 105187
14562422347621 105187
14562422347638 105187
とセルが分かれてる感じでした
以下の様に1つのセルに入るようにしたいです。
14562422347614 10518714562422347621 10518714562422347638 105187
もしよろしければまた検討お願いします。
(たけ) 2018/07/26(木) 12:04
無理やり...
Sub test() Dim cn As Object, rs As Object, txt As String Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") With cn .Provider = "Microsoft.Ace.OLEDB.12.0" .Properties("Extended Properties") = "Excel 12.0;HDR=No;IMEX=1;" .Open ThisWorkbook.FullName End With rs.Open "Select F1 From [Sheet1$A5:A50000] Where F1 Is Not Null And Not IsError(f1)", cn With CreateObject("VBScript.RegExp") .Global = True .Pattern = "[\r\t\n\f]" txt = .Replace(rs.GetString(2, , vbNullString, vbNullString, vbNullString), "") End With Open ThisWorkbook.Path & "\sample.txt" For Output As #1 Print #1, txt; Close #1 Set cn = Nothing: Set rs = Nothing End Sub (seiya) 2018/07/26(木) 12:50
以下のような流れでは問題あるだろうか? 1セル読んで改行なしで書き込みをループする。 Sub a() Dim FILE_NO As Integer Dim ROW_CNT As Integer FILE_NO = FreeFile Open "C:\WK\TST.TXT" For Output As FILE_NO ROW_CNT = 1 Do Until Cells(ROW_CNT, "A") = "" Print #1, Cells(ROW_CNT, "A").Value; ROW_CNT = ROW_CNT + 1 Loop Close #1 End Sub
(ねむねむ) 2018/07/26(木) 13:25
>以下の様に1つのセルに入るようにしたいです。
セルにいれるんですか?最初の質問ですと、テキストファイルに書き出したいというような質問だったとおもいますが・・・・
ところで、ねむねむさんや、???さんが提案されている改行コードを削除する案はダメなんでしょうか?結果が気になるので、好みでないならどんなところがダメで不採用なのか報告すると良いかもです。
また、???さんが紹介されているリンク先で、私がFor each 〜 Nextステートメント使って、結合する案を提示してますので、そちらをご覧頂いているのであれば、以下のようなコードが組めると思いますがもう実験済みでしょうか?
Sub test() Dim tmp As Range Dim buf As String
For Each tmp In Range("A6:A505") buf = buf & tmp.Value Next tmp
Open ThisWorkbook.Path & "\Sample.txt" For Output As #1 Print #1, buf Close #1
End Sub
理屈でいえば、約20億文字くらいまでは、String型の変数に格納できるっぽいので事足りませんか?
http://excelvba.pc-users.net/fol5/5_2.html
(もこな2) 2018/07/26(木) 17:16
もこな2さん、改行コードを削除は???さんとseiyaさん。 私のは書き込み時に改行コードを入れない方法。 だから私のはセル内に改行があればNG。 (ねむねむ) 2018/07/26(木) 17:21
あ〜ややこしくてすみません。
訳あって昼に書いた物を時間たってから投稿したので変なことになってしまいました。
自分が言いたかったのは、
・(ねむねむ) 2018/07/25(水) 16:11のテキストエディタ上で改行コードを削除する案
・(???) 2018/07/25(水) 17:07のマクロを使ってメモリ上?で改行コードを削除する案
のことを言いたかったんです。
seiyaさんのは、私のスキルだと外部オブジェクトや Evaluateメソッドを多用した複雑なコードはよく理解できないので、改行コードを削除してるのか、そうで無いのかわからず言及できなかったんです・・orz
あと、上記とは関係ないですが、ねむねむさんの2018/07/26(木) 13:25のコード、せっかく「FILE_NO = FreeFile」してるのに途中から「#1」になっちゃってる気が・・・これって「#FreeFile」じゃないですか?(勘違いだったら誠にすみません)
(もこな2) 2018/07/26(木) 19:38
もこな2さん。 >せっかく「FILE_NO = FreeFile」してるのに途中から「#1」になっちゃってる気が・・・ 切り貼りでテストコード組んでエラー出ないからときちんとチェックせずに書き込んでしまった。 お言葉通り、#1は#FreeFileです。 ご指摘ありがとうございます。 (ねむねむ) 2018/07/27(金) 09:16
システムに確認に時間がかかりまして本日
確認できました。
問題なく取込がいけました。
ありがとうございました。
また何かわからないことがありましたらよろしくお願いします。
以上
(さる) 2018/08/03(金) 14:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.