人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルマクロにて下記のようにセルを配列した文字列があった場合、
|A列|B列
?????????
1|A |ABC
2|B |DEF
3|C |GHI
b列のセルの内容をテキストファイルで保存し、ファイル名をA列の文字列で保存したいのですがどのようなマクロを組めばいいのでしょうか?
出来ればそのまま使える形で答えていただけると助かります。
最終的には
A.txt→テキスト内容:ABC
B.txt→テキスト内容:DEF
C.txt→テキスト内容:GHI
と保存できればOKです。数量が15000行あってすべてファイルに直すには時間がかかるのでお力を貸してください。

●質問者: yokosima_nhp
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:ABC def txt エクセル セル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● jccrh1
●50ポイント
Sub ファイル出力()
 Const 出力フォルダ = "D:\"
 Set 範囲 = Range(Range("B1"), Range("A65536").End(xlUp))
 For I = 1 To 範囲.Rows.Count
 Open 出力フォルダ & 範囲(I, 1) & ".txt" For Output As #1
 Print #1, 範囲(I, 2)
 Close #1
 Next I
End Sub

2 ● rsc
●30ポイント

こちらは参考になるでしょうか。

Sub myMacro()
 Dim n, i As Long
 Dim fName As String
 Dim sheetobj As Worksheet
 Set sheetobj = ThisWorkbook.Worksheets(1)
 
 n = FreeFile
 With sheetobj
 For i = 1 To LastRow(sheetobj, 1)
 fName = .Cells(i, 1) + ".txt"
 Open fName For Output As #n
 Print #n, .Cells(i, 2)
 Close #n
 Next i
 End With
End Sub

Function LastRow(sheetobj As Worksheet, C)
 LastRow = sheetobj.Cells(sheetobj.Rows.Count, C).End(xlUp).Row
End Function

※参考URL

●Office TANAKA - Excel VBA講座:ファイルの操作[テキストファイルを ...

http://officetanaka.net/excel/vba/file/file08.htm

●VBA応用(テキストデータの書き出し)

http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_040.html


3 ● SALINGER
●70ポイント ベストアンサー

マクロで作る上で何点か押さえておくポイントとして、

何らかの理由でファイルが作成出来ない場合の処理。


下記のコードをコピペして実行すると最初に保存場所を聞いてきて、

指定した場所に上書きをせずに保存します。


Sub 行ごとに保存()
 Dim FSO As Object
 Dim lastRow As Long
 Dim i As Long
 Dim TS As Object
 Dim SucCount As Integer
 Dim ErrCount As Integer
 Dim str As String
 
 Set FSO = CreateObject("Scripting.FileSystemObject")

 lastRow = Cells(Rows.Count, 1).End(xlUp).Row
 
 With Application.FileDialog(msoFileDialogFolderPicker)
 .Title = "保存する場所を選択してください"
 If .Show = True Then
 For i = 1 To lastRow
 On Error Resume Next
 Set TS = FSO.CreateTextFile(.SelectedItems(1) & "\" & Cells(i, 1).Value & ".txt", False)
 
  '意味の無い文字列に一旦エスケープ
 str = Replace(Cells(i, 2).Value, vbCrLf, ";@:][/")
 str = Replace(str, vbLf, vbCrLf)
 str = Replace(str, ";@:][/", vbCrLf)
 
 TS.Write (str)
 If Err.Number > 0 Then
 ErrCount = ErrCount + 1
 Else
 SucCount = SucCount + 1
 End If
 TS.Close
 Set TS = Nothing
 On Error GoTo 0
 Next i
 End If
 End With
 
 MsgBox "成功: " & SucCount & vbNewLine & "失敗: " & ErrCount
 
 Set FSO = Nothing
End Sub
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ