- ベストアンサー
軽いデータで出力
初心者です。 Excel2000で決まったテンプレートを使用しています。 必要な情報のみ残したいので A1のセルとA5~F100までの情報のみ テキストなどの軽いデータで出力したいです (区切りはいりません) コマンドボタンでファイル名を入力して 出力する形がいいのですが出来ますか? 勝手を言って申し訳ないのですが 出来ればマクロの記述をご教授願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じ 'A1,A5:F100を出力 Private Sub CommandButton1_Click() Dim fso, file, filename Dim x As Range, line, i filename = InputBox("出力ファイル名入力", "ファイル名入力") Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile(ThisWorkbook.Path & "\" & filename, 2, True) 'ファイルが既に在る時上書 file.WriteLine Range("A1").Value For Each x In Range("A5:A100") line = "" For i = 0 To 5 'A~Fまでをつなぐ line = line & x.Offset(0, i).Value Next file.WriteLine line Next file.Close End Sub
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
ちょっと他のことをしてたら、#1 のBLUEPIXYさんの内容と同じ方法でした。 >テキストなどの軽いデータで出力したいです >(区切りはいりません) 区切りって、デリミタと呼びますが、何もなくても、やっぱりありますよね。 '第一案: 記録マクロで、Prn 出力してしまう方法ですね。 難しいことを考えないで、Prn 出力ではダメなのですか? 記録マクロの範疇です。 フォームボタンにでも、つけてください。 '第二案: Sub Test_CreateText() Dim Fname As String Dim objFSO As Object Dim objText As Object Dim myPath As String Dim buf As String Dim i As Long Const Delim As String = " " '区切りはは半角空白 Fname = "Test2.txt" '出力ファイル名 Set objFSO = CreateObject("Scripting.FilesystemObject") 'オブジェクト生成 myPath = ThisWorkbook.Path & Application.PathSeparator Set objText = objFSO.CreateTextFile(myPath & Fname) 'ファイル生成 With objText .WriteLine (Cells(1, 1)) For i = 5 To 500 buf = Cells(i, 1) & Delim & Cells(i, 2) & Delim & _ Cells(i, 3) & Delim & Cells(i, 4) & Delim & _ Cells(i, 5) & Delim & Cells(i, 6) '一旦、配列に入れたほうが速いけれど、今回は、こうします。 .WriteLine (buf) Next i End With Set objText = Nothing: Set objFSO = Nothing MsgBox "終了しました。" End Sub
お礼
ありがとうございました。 そのまま使わせて頂きます。
お礼
ありがとうございます。 記録マクロしか使った事が無かったので 色々勉強になりました。