エクセルに入力したデータを複数のテキストデータに一括で書き出す方法はないものでしょうか。


<<エクセル>>
=================================
品種 地区  品名  数量 金額
=================================
AA  東京   CCC   8   3

BB  大阪   QQQ   6   2

CC  埼玉   BBB   2   1


========================================
<<テキスト>>

【AA】←ファイル名

●地区
東京

●品名
CCC

●数量
8

●金額
3
=================================

以下、BBのファイルは大阪の情報、CCのファイルには埼玉の情報といった具合。



毎回面倒で仕方ないので、シェアウェア導入しても良いので、何とかしたいです。

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2012/07/25 21:05:04

回答2件)

id:uwao No.1

回答回数180ベストアンサー獲得回数39

予めAA BB CCのシートを作成し、テキストとして表示したい画面を作成しておきます。
シート作成後、各シートを自動的にCSV形式で保存するようなマクロを組んでは如何でしょうか。
 
AAのシートのA列に
●地区
東京
 
●品名
CCC
 
●数量
8
 
●金額
3
 
のように表示させていると、そのままテキストとして保存出来ると思います。

id:takllin

ありがとうございます。
そのマクロが知りたいのです。
同じような質問を参考にしてみましたが、エラーが出てしまいうまくいきませんでした。

2012/07/19 05:56:12
id:ku__ra__ge No.2

回答回数118ベストアンサー獲得回数40

1行目のA列から列タイトルが記入されており、2行目以降にデータが記入されている前提で、
その内容をファイルに出力するマクロです。
ファイルに出力したいシートを表示して、outputFilesマクロを実行してください。

Sub outputFiles()
    Set colList = getColItems(Range("A1"))
    
    Set r = Range("A2")
    Do While r.Text <> ""
        Set dataList = getColItems(r)
        Call outputFile(colList, dataList)
        Set r = r.Offset(1, 0)
    Loop
    
    MsgBox "終わりました"

End Sub

Private Function getColItems(baseRange)
    Set getColItems = New Collection
    Set r = Cells(baseRange.Row, baseRange.Column)
    Do While r.Text <> ""
        Call getColItems.Add(r.Text)
        Set r = r.Offset(0, 1)
    Loop
End Function

Private Sub outputFile(colList, dataList)
    Set fso = CreateObject("Scripting.FileSystemObject")
    file = fso.GetParentFolderName(ActiveWorkbook.FullName) & "\" & dataList(1) & ".txt"
    Set ts = fso.OpenTextFile(file, 2, True)
    For i = 2 To colList.Count
        Call ts.WriteLine("●" & colList(i))
        Call ts.WriteLine(dataList(i))
        Call ts.WriteLine("")
    Next
    ts.Close
End Sub

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません