[[20150928224734]] 『テキストファイル書き込みに時間が掛かる。』(ブラック&ホワイト) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『テキストファイル書き込みに時間が掛かる。』(ブラック&ホワイト)

下のコードで書き込みをすると時間が掛かかります。もっと早くできるやり方はありますか。

Dim lastRow As Long, row As Long, lastCol As Integer, col As Integer
Dim fileNumber As Integer, csvFile As Variant, i As Integer

csvFile = Application.GetSaveAsFilename("材料.csv", "CSV (*.csv),*.csv")
If csvFile = False Then End

On Error GoTo ErrorHandler

 i = 100

lastRow = Cells(1110, i).End(xlDown).row
lastCol = Cells(1110, i).End(xlToRight).Column

fileNumber = FreeFile

Open csvFile For Output As #fileNumber

For row = 2 To lastRow

    For col = 11 To lastCol - 2
        Print #fileNumber, Cells(row, col) & ",";
    Next
    Print #fileNumber, Cells(row, col) & ""
Next

Close fileNumber

ErrorHandler:

< 使用 Excel:unknown、使用 OS:unknown >


[[20150926223714]] 『他のシートデータをテキストファイル書き込み』(a-su)

 これを参照されてはいかが。
 というか、同じ人でしょうか?

 基準としているセルは、Cells(1110,100) つまり CV1110 と、HB1105 の違いはありますが
 ともに領域の最終を、xlDown と xlToRight で求めていますね。

 あちらにもコメントしましたが、xlDown と xlToRight で求めている理由は?

 あちらでは質問者さんからのレスがないのですが、このシート(というかデータ)の
 具体的なレイアウトはどういうものですか?

(β) 2015/09/29(火) 05:16


 それと、本題とは関係ありませんが 

 row As Long

 変数の名前に row を使うのは避けたほうがいいですよ。
 Rangeオブジェクトのプロパティ名と同じ名前なので紛らわしいということもありますし
 なによりも、この宣言を、一度行うと、以降、セル.Row とタイプしても(アップされたコードにもあるように)
 セル.row と、小文字の r になってしまいます。実害はないですが、最近、「これはなぜだ!」という質問がありました。

 ちなみに、これ(小文字の r になってしまう現象)を復旧させるには、いったん Dim Row As Long といったような記述をした上で
 それを削除してブックを保存。これで、以降は復旧します。

(β) 2015/09/29(火) 05:50


分かりにくい説明で申し訳ありあせん。
少し問題点がわかりました。
(ブラック&ホワイト) 2015/09/29(火) 08:07

コメント返信:

[ 一覧(最新更新順) ]


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