![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Excelマクロ制作を始めて半月たらずの初心者です。
Excelシートの内容を.txtファイルに出力するマクロを作成しております。
目標として、指定した範囲(セルD11~F20)の範囲のみの行列データを出力したいのですが、
現状では、セルD11以下の行列データを出力する方法しか分かりません。
下記の内容が現在制作中のマクロですが、どの様に変更・修正すればよろしいのでしょうか?
皆様方のご教授をお願いいたします。
Sub WriteFile_TXT2()
'
' WriteFile_TXT2 Macro
' 目標:セル範囲指定("D11:F20")してTXTファイル出力
'
Dim ws As Worksheet
'5つめのシートの内容を使用する。
Set ws = ThisWorkbook.Worksheets(5)
Dim datFile As String
datFile = ActiveWorkbook.Path & "\data.txt"
Open datFile For Output As #1
'現行:セルD11からシートの終わりまで1行ずつ繰り返す
Dim i As Long, j As Long
i = 11
Do While ws.Cells(i, 4).Value <> ""
j = 4
Do While ws.Cells(i, j + 1).Value <> ""
Print #1, ws.Cells(i, j).Value & " ";
j = j + 1
Loop
Print #1, ws.Cells(i, j).Value
i = i + 1
Loop
Close #1
MsgBox "data.txtに書き出しました"
End Sub
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
元のコードをそのまま活かして手直ししてみました。なんだか、モヤッとしたコードになってしまいました。そして、#1さんのご指摘は、こちらでは今の段階では触らないままにしておきます。
'//
Sub WriteFile_TXT3()
' WriteFile_TXT2 Macro '変更
' 目標:セル範囲指定("D11:F20")してTXTファイル出力
'-------------------
Dim ws As Worksheet
'5つめのシートの内容を使用する。
Set ws = ThisWorkbook.Worksheets(5)
Dim datFile As String
Dim i As Long, j As Long, k As Long, kt As Long
Dim buf As String '1行のバッファ
Const rw As Long = 11 '最初の行
Const col As Long = 4 '最初の列
datFile = ActiveWorkbook.Path & "\data.txt" '出力ファイル名
Open datFile For Output As #1
For i = rw To ws.Cells(Rows.Count, col).End(xlUp).Row
For j = col To ws.Cells(i, Columns.Count).End(xlToLeft).Column
buf = buf & " " & ws.Cells(i, j).Value
Next j
k = Len(buf)
If k > 1 Then '行でまとめて判定
Print #1, Trim(buf)
End If
kt = kt + k
buf = ""
Next i
Close #1
If kt > 1 Then
MsgBox "data.txtに書き出しました"
Else
MsgBox "出力に失敗しました", vbCritical
End If
End Sub
うーん、検証を行った所、この方法では指定した範囲内の取り込みは行ってくれないようです。(指定範囲外のセルデータまで取り込んでしまうようです)しかし、この方法は空白のセルがあってもデータの取り込みを行ってくれるようです。(私の方法では、空白セルがあった所で取り込み終了)回答者様の方法は、空白セルを含んだデータの取り込み処理が必要な場合に参考とさせていただきます。
No.1
- 回答日時:
もしかしたらですが、アクティブシートの毎回選択範囲を変えてそのセルの値を「data.txt」に書き出す。
と言う事で良いのでしょうか?またファイル名が固定なので毎回上書きしてしまっても良いのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
【Excel】特定セルの内容をテキストファイルに書き出したい
Excel(エクセル)
-
VBAでテキスト出力時のスペースについて
Visual Basic(VBA)
-
VBAでメモ帳にコピペをしたいのですが…
PowerPoint(パワーポイント)
-
-
4
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
5
EXCEL VBAでテキストファイルの特定の場所にデータを書き込む方法
Visual Basic(VBA)
-
6
マクロを使ってフォルダー内にあるtxtデータをエクセルにデータに変換する方法をご教授願います
Excel(エクセル)
-
7
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
8
ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存
Visual Basic(VBA)
-
9
Excelでcsvやtxtで保存する時にダブルクォートが勝手に付く
Excel(エクセル)
-
10
エクセル・マクロ(VBA)で、指定範囲を保存したい。
Excel(エクセル)
-
11
文字列からタブコードを取り除きたい
Visual Basic(VBA)
-
12
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
13
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
14
Excelで"で囲む方法
Excel(エクセル)
-
15
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
16
【VBA】ExcelマクロでCSVファイルに保存したデータが"で囲まれてしまう
Visual Basic(VBA)
-
17
エクセルで文字列をtxtファイルに変換すると"がつく
Excel(エクセル)
-
18
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
19
「選択範囲を解除してアクティブセルを選択」をマクロで行うにはどうすればよいでしょうか
Excel(エクセル)
-
20
VBA:Openステートメントで開いたCSVファイルの特定行を削除する方法
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
エクセルで1月0日と表示される!!
-
(Excel)あるセルに文字を入力...
-
シート参照で変数を使いたい(EX...
-
ExcelでTODAY関数を更新させな...
-
別シートのセルを絶対参照にする
-
エクセルで条件に一致したセル...
-
Excelシートの保護時にデータの...
-
エクセルで別シートからの最大...
-
EXCEL関数でシート名が変わる可...
-
エクセルで20万行あるシート...
-
複数シートの同じセル内容を1シ...
-
エクセルで、加筆修正したセル...
-
excelでハイパーリンクになって...
-
[EXCELマクロ] シートタブに自...
-
エクセルで、勤務表から 日付...
-
=HYPERLINK(VLOOKUPに関して。
-
エクセルで複写のように自動入...
-
エクセルでシート保護をかける...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
エクセルで1月0日と表示される!!
-
エクセルで条件に一致したセル...
-
Rangeメソッドは失敗しました。...
-
(Excel)あるセルに文字を入力...
-
Excelで複数シートの選択セルを...
-
エクセルで複写のように自動入...
-
Excelシートの保護時にデータの...
-
シート参照で変数を使いたい(EX...
-
別シートのセルを絶対参照にする
-
複数シートの同じセル内容を1シ...
-
Excelでスクロールすると文字が...
-
Aというブックの1というシート...
-
エクセルで20万行あるシート...
-
エクセルの文字
-
エクセルで、加筆修正したセル...
-
VBAで変数に関数式の結果をセッ...
-
ExcelでTODAY関数を更新させな...
-
VBAで、セル(Range)のオブジ...
おすすめ情報