[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『範囲を指定して テキスト書き出し 』(minoru)
お世話になります。
A列セルがブランクでなければ、1行毎にテキストに書き出したいのですが
範囲指定方法をご教示願います。
A1:GR1を書き出し
A2:GR2を書き出し
・
・
・
Dim i As Long
i = 1
Do While ws.Cells(i, 1).Value <> ""
Print #1, ws.Cells(i, 1).Value '1列ならエラー無
'Print #1, ws.Range(Cells(i, 1), Cells(i, 200)).Value 'これがエラー i = i + 1 Loop
よろしくお願いします
< 使用 Excel:Excel2010、使用 OS:unknown >
あまりよく検証してないけど。
Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(ws.Range(ws.Cells(i, 1), ws.Cells(i, 200)).Value)), vbTab) ( MK) 2022/12/02(金) 19:19:23
返信ありがとうございます
下記のコードで試しましたがエラーになりました。
Sub makeText()
Application.ScreenUpdating = False
On Error GoTo Label01
Sheets("出力").Visible = True
Sheets("出力").Select
Dim ws As Worksheet
Dim Fn As String
Dim datFile As String
Set ws = ThisWorkbook.Worksheets("出力")
Fn = Sheets("マスタ").Range("l19").Value
datFile = ActiveWorkbook.Path & "\" & Fn
MsgBox datFile
Open datFile For Output As #1
Dim i As Long
i = 1
Do While ws.Cells(i, 1).Value <> ""
Print #1, Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(ws.Range(ws.Cells(i, 1), ws.Cells(i, 200)).Value)), vbTab) i = i + 1
Loop
Close #1
MsgBox Fn & " に書き出しました"
Exit Sub
Label01:
Sheets("出力").Visible = xlSheetVeryHidden 'メニューバーも非表示
Sheets("マスタ").Select
MsgBox "出力できませんでした!!"
End Sub
(minoru) 2022/12/02(金) 22:41:58
1. A列が空白でない行を抽出 2. 新規ブックを追加して1番目のシートに、1をコピペ 3. 2をテキスト形式で保存
ということでは具合がわるいのでしょうか?
(もこな2) 2022/12/02(金) 22:51:14
For j = 1 To 200 tx = tx & ws.Cells(i, j).Value 'これがエラー Next の様な感じで、連結すると、どうなるでしょう。^^; m(__)m (隠居Z) 2022/12/02(金) 23:16:11
返信ご回答ありがとうございます。
【もこな2様】
Sheets("出力").Select
Worksheets("出力").Copy
ActiveWorkbook.SaveAs Filename:=datFile, _
FileFormat:=xlText
当初は上記のコードで作成していたのですが、システム入力時にファイルエラーとなりました
テキストの改行コード?がエラー原因かなと思い、別のコード試案中です
【隠居Z様】
Jとtxの変数指定して実行しましたが
Open datFile For Output As #1 ファイル名または番号が不正ですのエラーとなりました
自分は改行コードが理解できていないようです。
Openステートメント以外で、書き出しができればと思っていますが、アドバイス等ございましたら
よろしくお願いします。
(minoru) 2022/12/03(土) 09:35:58
?システム様がエクセルのセルに、お恵み下さる、ゴミお掃除は
クリーン関数とトリム、で、ラップしまくれば
解決する場合もございますです。
(隠居Z) 2022/12/03(土) 10:45:37
Option Explicit Sub OneInstanceMain() Dim i&, j&, tx$, a, b a = ThisWorkbook.Path & "\tes9.txt" With Worksheets("Sheet1") i = 1 Open a For Output As #1 Do If .Cells(i, 1) <> "" Then For j = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column b = .Cells(i, j).Value b = Application.Clean(Trim(b)) If b = "" Then b = Chr(32) tx = tx & b Next Print #1, tx tx = "" End If i = i + 1 If i > 5 Then Exit Do Loop Close #1 End With End Sub 五行目まで指定で書き出して見ました。 A列以外、掃除の結果Empty、なら、スペースを入れています。 外しておりましたら、お許しを。m(__)m (隠居Z) 2022/12/03(土) 11:15:06
■2
>下記のコードで試しましたがエラーになりました。
具体的にどこでどのようなエラー(エラー番号、エラーメッセージ)が出たのでしょうか?
■3
「■1」に関連しますが、タブ区切りで問題ないのですか?
また、「■2」に関連しますが、「Sheets("マスタ").Range("l19").Value」に何が入っているのですか?
(特に拡張子が何であるか気になります)
(もこな2) 2022/12/03(土) 13:26:57
たくさんのご指摘アドバイスいただき、誠にありがとうございます、ひとつずつ試してみます。
もこな2 様
東京のシステムから抽出した 東京.txtを 大阪のシステム取込み
抽出取込みテキストのルールは下記のとおりで作成されています
1.文字コード:S-JIS
2.囲み文字:なし
3.フィールドの区切り文字:タブ(TAB)
4.改行コード:各レコードにCR/LF
5.ヘッダー/トレーラー:無し
今回、東京.txtのデータに不具合の列があり、大阪のシステムに取込む前に数値の訂正が必要となりました。 エクセル加工に拘らないのですが、知識不足でエクセルを通しての数値加工しかやったことがありません。
エクセルを介して出力作成したテキストと最初のテキストを テキスト形式で比較すると最初のテキストファイルは1レコード3行で表示され、出力作成したテキストファイルは1レコード2行で表示されています。 なので、改行コードの問題かな?と推測しました。
Sheets("マスタ").Range("l19") は 東京.txt '出力ファイル名として
エラーの内容
Open datFile For Output As #1
実行時エラー52
ファイル名または番号が不正ですのエラーが発生しました
よろしくお願いします。
(minoru) 2022/12/03(土) 14:53:42
(#^^#) Option Explicit Sub sd() Dim a, i&, y& a = ActiveWorkbook.Path & "\" & Worksheets("マスタ").Range("l19").Value For i = 1 To Len(a) y = y + 1 Cells(1, y) = Application.Unicode(Mid(a, i, 1)) Next End Sub (隠居Z) 2022/12/03(土) 15:46:13
今回の件とは関係ないとは思いますが、念のため。
http://www.officetanaka.net/excel/vba/function/FreeFile.htm
(MK) 2022/12/03(土) 16:24:57
提示のコードを↓のようにして、実験してみたのですが特に問題は生じませんでした。
Sub 整理() Dim ファイル番号 As Long Dim 行 As Long
ファイル番号 = FreeFile Open ActiveWorkbook.Path & "\" & Sheets("マスタ").Range("L19").Value For Output As #ファイル番号
With ThisWorkbook.Worksheets("出力") For 行 = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row If .Cells(行, "A").Value <> "" Then Print #1, Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(.Cells(行, 1).Resize(1, 200).Value)), vbTab) End If Next End With
Close #ファイル番号 End Sub
(もこな2) 2022/12/03(土) 16:31:05
誤 Print #1,〜 正 Print #ファイル番号, 〜
でしたね。失礼しました。
(もこな2) 2022/12/03(土) 17:09:23
様々なアドバイスとコードのご提示本当にありがとうございます。
最近自宅PC交換しました。
ファイル名エラーの原因は自宅PCのOneDrive環境が原因かもしれません
ワンドライブの影響しない環境で試してみますので、よろしくお願いします。
(minoru) 2022/12/03(土) 17:51:07
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.