重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

ご教授下さい。

エクセルでの行と列の最初とデータの入っている最後のデータを以下のようにしてテキストで
取得しようと考えています。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim StrFN As String
StrFN = "パス.txt"

Dim i As Long, LngLoop As Long
Dim IntFlNo As Integer


Worksheets("sheet1").Activate
LngLoop = Range("a65536").End(xlUp).Row
IntFlNo = FreeFile

Open StrFN For Append As #IntFlNo

For i = 1 To LngLoop
Write #IntFlNo, Cells(i, 1), 'ログ出力範囲
Next i

Close #IntFlN

End Sub

どうやら列の指定がうまくいってないようです。
Cells(i, 1), 'ログ出力範囲の1をどのように指定すればいいでしょうか?

取得したい範囲については添付しました。

どうかよろしくお願いいたします。

「エクセルVBA 行と列の取得」の質問画像

A 回答 (2件)

ん?



再掲:
>適切に応用するか、必要ならキチンと説明を添えてご相談を投稿し直して下さい。


もうちょっとはっきり言われないとお判りにならないようなので。
>「行と列の最初のデータからデータの入っている最後のデータまで」

だから「具体的に」どこにデータが入ってる「可能性がある」のか(=どこのセル範囲で「最初から最後まで」を拾いたいのか。一例を挙げれば1行目は含むのか含まないのかとか、他にも。)ご相談で適切に情報が提供されてないので、こんな具合に的外れの回答が寄せられてお互いの時間と手間を無駄にすると指摘してるんです。反省してください。



勝手に想像:
private sub Workbook_beforeClose(cancel as boolean)

’version 2
 dim myFile as string
 dim r as long, c as long

 worksheets("Sheet1").select
 myfile = "c:\test\test.txt"
 open myfile for append as #1

 with activesheet.usedrange
 for r = .cells(1).row to .cells(.count).row
  write #1, cells(r, iif(cells(r, 1) = "", cells(r, 1).end(xltoright).column, 1 )).value, cells(r, columns.count).end(xltoleft).value
 next r
 end with
 close #1

end sub




#参考
補足として
>行と列の最初とデータの入っている最後のデータ

この書き振りから「生データがバラバラとセルに記入されている」と判断しましたが、実は数式とかが埋まってるシートだったりしたら、また違う事を考えなきゃいけません。
    • good
    • 0

>エクセルでの行と列の最初とデータの入っている最後のデータを



「最初」がA列並びに1行目からと決まっているとして、「最後」は各行の右端を取ってくるだけです。


private sub Workbook_beforeClose(cancel as boolean)
 dim myFile as string
 dim r as long

 worksheets("Sheet1").select
 myfile = "c:\test\test.txt"
 open myfile for append as #1

 for r = 1 to cells(rows.count, "A").end(xlup).row
  write #1, cells(r, 1).value, cells(r, columns.count).end(xltoleft).value
 next r
 close #1

end sub



画像に何か説明を書かれているようですが見えませんのでスルーします。適切に応用するか、必要ならキチンと説明を添えてご相談を投稿し直して下さい。

この回答への補足

お礼が遅くなってしまいました。申し訳ありませんでした。
質問通りの動作を確認しました。ありがとうございます。

ですが、申し訳ありません。
私の質問の仕方が悪かったようです。

私もここまでは作成できていました。
取得したい範囲は、行と列の最初とデータの入っている最後のデータではなく
「行と列の最初のデータからデータの入っている最後のデータまで」です。

御手数ですが、もう一度ご教授願えないでしょうか。
よろしくお願いいたします。

補足日時:2013/09/25 22:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!