[[20221202180549]] 『範囲を指定して テキスト書き出し 』(minoru) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『範囲を指定して テキスト書き出し 』(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

 MK様

返信ありがとうございます
下記のコードで試しましたがエラーになりました。

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行毎にテキストに書き出したいのですが
ちょっと確認ですが、↑ではなく
 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様
隠居Z様

返信ご回答ありがとうございます。

【もこな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


色々御座いますよ。
ファイルシステムオブジェクト
ADODBテキストストリーム
エトセトラ〜
ファイル、エクスポート、でprm、とかcsv変換でも
でも
Openステートメントで十分では。。。^^
とか思います。
datFile
の中身を確認されては如何でせう。あんがい、¥が抜けていたり、は
私もよくやらかしますもので。。。^^;
m(__)m
(隠居Z) 2022/12/03(土) 10:20:28

追伸

?システム様がエクセルのセルに、お恵み下さる、ゴミお掃除は
クリーン関数とトリム、で、ラップしまくれば
解決する場合もございますです。
(隠居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

w、判定時のA列のゴミ掃除は致しておりません、ご必要でしたら
ご修正を。( ̄▽ ̄)
m(__)m
(隠居Z) 2022/12/03(土) 11:17:02

■1
>当初は上記のコードで作成していたのですが、システム入力時にファイルエラーとなりました
>テキストの改行コード?がエラー原因かなと思い、別のコード試案中です
話がよくえませんが、【改行コード?がエラー原因かなと思い】の根拠はなんですか?
文字コードとか区切り文字とか他にも怪しいところがあるとおもいますが・・・

■2
>下記のコードで試しましたがエラーになりました。
具体的にどこでどのようなエラー(エラー番号、エラーメッセージ)が出たのでしょうか?

■3
「■1」に関連しますが、タブ区切りで問題ないのですか?
また、「■2」に関連しますが、「Sheets("マスタ").Range("l19").Value」に何が入っているのですか?

 (特に拡張子が何であるか気になります)

(もこな2) 2022/12/03(土) 13:26:57


隠居Z 様

たくさんのご指摘アドバイスいただき、誠にありがとうございます、ひとつずつ試してみます。

もこな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


被りましたが、実は「#1」を閉じ忘れていて使っていたとかありませんかね。

提示のコードを↓のようにして、実験してみたのですが特に問題は生じませんでした。

    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


もこな2様
隠居Z様
MK様

様々なアドバイスとコードのご提示本当にありがとうございます。
最近自宅PC交換しました。
ファイル名エラーの原因は自宅PCのOneDrive環境が原因かもしれません
ワンドライブの影響しない環境で試してみますので、よろしくお願いします。

(minoru) 2022/12/03(土) 17:51:07


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.