- 締切済み
excelからのテキスト出力方法
はじめまして。 VBAでセルに入力された文字と固定した文字をテキストとして出力し 自動的に保存させたいのですがどうすれば良いでしょうか? イメージとしては・・・ セル・・・入力した文字 A1・・・○○○ A2・・・■■■ ↓ マクロ実行 ↓ テキスト出力・保存(D:\test.txt) ---テキスト内容--- set ○○○ set ■■■
- みんなの回答 (5)
- 専門家の回答
みんなの回答
*************** テキストファイルを出力するコード *************** Private Sub cmdOutputText_Click() Dim I As Integer Dim strText As String For I = 1 To 10 If Len(Cells(I, 1) & "") > 0 Then strText = strText & ”set" & Cells(I, 1) & Chr$(13) & Chr $(10) End If Next FileWrite "D:\test.txt", strText End Sub ****************** FileWrite関数(標準モジュールに追加) ****************** [ツール]-[参照設定]-Microsoft Scripting Runtime にレ点を付けて下さい。 Public Function FileWrite(ByVal FileName As String, _ ByVal Text As String) As Boolean On Error GoTo Err_FileWrite Dim fso As FileSystemObject Dim txs As TextStream Set fso = New FileSystemObject Set txs = fso.CreateTextFile(FileName, True) txs.Write Text FileWrite = True Exit_FileWrite: Exit Function Err_FileWrite: MsgBox Err.Description & "(FileWrite)", vbExclamation, " 関数エラー メッセージ" Resume Exit_FileWrite End Function
#3です。 すみません。1行書き間違えていました。 '中間行の書き込み For I = firstRow + 1 To II - 1 ' ←この行はこれが正解 TXT = TXT & kotei & ActiveSheet.Range("A" & I).Value & Chr(10) Next I なお,#3で「エラー処理は入れず…」と書きましたが, どういう場合がエラーかというと, 「A列に何もデータがなかった場合」や, 「A列に1つしかデータが入っていなかった場合」や, 「A列に空白セルが入っていた場合」などです。 必要であれば,IF で分岐する必要が出てきますが,それをいちいち書いていると本題のスクリプトがどうなっているのかわからなくなると思い,書いていません。
こんな感じでいかがでしょうか? ↓ ----------------------------------------- ' テキストファイル保存サンプル Sub テキスト保存() Dim N As Long N = FreeFile Dim I As Integer, II As Integer, firstRow As Integer Dim TXT As String, kotei As String '最初の行の設定 firstRow = 1 '固定した文字の設定 kotei = "set " '最終行の取得 II = ActiveSheet.Range("A65536").End(xlUp).Row '最初の行の書き込み TXT = kotei & ActiveSheet.Range("A" & firstRow).Value & Chr(10) '中間行の書き込み For I = firstRow To II - 1 TXT = TXT & kotei & ActiveSheet.Range("A" & I).Value & Chr(10) Next I '最後の行の書き込み TXT = TXT & kotei & ActiveSheet.Range("A" & II).Value 'テキストの保存(書きかえ) Open "D:\test.txt" For Output As #N Print #N, TXT Close #N End Sub ---------------------------------------------- Excel VBA の質問ではほぼ初の回答です。 諸先輩の方々からはお叱りを受ける書き方の部分もあるかもしれませんが, エラー処理は入れずシンプルに書いてみました。 動作確認はしています。
- imogasi
- ベストアンサー率27% (4737/17069)
>入力された文字と固定した文字 どういう意味ですか。全てエクセルは値はセルの値として持っており 区別する必要はないと思うが、わざわざ区別して書くのはどういう意味ですか。 >テキストとして出力し 各列と行は分けて出力するのでしょうが、セパレータ(区切り)はどうするのですか。行は改行復帰を入れるのでしょうが。 >自動的に保存させたい どういうキッカケでVBAのプログラムを実行させれば良いのですか >set ○○○ Setはどういう意味ですか。何か他の言語に持っていこうとしているのですか。
EXELのファイルをテキスト形式やCSV形式で保存するのではだめなんですか? 質問の内容では、一列目に「set」の文字を入れてテキスト形式で保存すればいいように思えますが。