[[20140901185038]] 『テキストファイルを生成するマクロ』(ゆういち) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『テキストファイルを生成するマクロ』(ゆういち)

ファイル名を指定して、新たなテキストファイルを大量に生成したいと思っています。

ファイル名の規則は、たとえば、画像の場合、次のようになります。

姓名誕生日
山田太郎2976
abc&223&(あいうえお)



えお

つまり、次のようになります。

A1+B1+C1+・・・・・Z1
A2+B2+C2+・・・・・Z2



A10000+B10000+C10000+・・・・・Z10000

他の条件は以下の通りです。

・セルの範囲は縦は1-10000、横はA-Zまでです。
・ファイルを保存するフォルダはCドライブのデスクトップにある「TXT」というの名前のフォルダとします。
・空白のセルもあまり意味はありませんが、結合する方式です。
・UTF-8である。
・拡張子はtxtである。

よろしくお願い申し上げます。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 >ファイル名の規則は、たとえば、画像の場合、次のようになります。 
 画像ってなんでしょう。

 説明が良くわからないのですが、各行のA:Zを連結したものがファイル名で、
 中身は空なのでしょうか?

 ファイルは10000個ということですか?
(Mook) 2014/09/01(月) 22:08

返信ありがとうございます。

忘れていました。申し訳ありません。
ttp://www.fastpic.jp/viewer.php?file=6237426743.png

説明が良くわからないのですが、各行のA:Zを連結したものがファイル名で、
 中身は空なのでしょうか?
その通りです。

ファイルは10000個ということですか? 10000個ではなく、A:Zがすべて空白の場合は、ファイルは生成しません。またファイル名が重複していることはないので、考慮する必要はありません。

説明不足で申し訳ありませんでした。

再び、よろしくお願い申し上げます。
(ゆういち) 2014/09/02(火) 08:18


 こんなところでしょうか。

 Sub Sample()
    Dim TextFolderPath
    TextFolderPath = CreateObject("Wscript.Shell").SpecialFolders("Desktop") & "\TXT"

    If Dir(DeskTopPath) = "" Then MkDir DeskTopPath

    tbl = Range("A1:Z10000")
    With CreateObject("ADODB.Stream")
        .Type = 2
        .Charset = "UTF-8"

        For r = 1 To UBound(tbl, 1)
            fn = tbl(r, 1)
            For c = 2 To UBound(tbl, 2)
                fn = fn & tbl(r, c)
            Next
            If fn <> "" Then
                .Open
                .writetext "", 0
                .savetofile TextFolderPath & "\" & fn & ".txt", 1
                .Close
            End If
        Next
    End With
 End Sub

(Mook) 2014/09/02(火) 12:58


どうもありがとうございます。

エラーになってしまいました。詳細をキャプチャしました。

ttp://www.fastpic.jp/viewer.php?file=6527453271.png

ttp://www.fastpic.jp/viewer.php?file=1014167955.png

下のようにフォルダはパスで指定する方針のほうが助かります。フォルダがない場合は、生成するというのも助かります。
C:\Users\ABC\Desktop\TXT

再び、よろしくお願い申し上げます。
(ゆういち) 2014/09/02(火) 17:41


 こちらではエラーなく実行できたのですが、とりあえず
 TextFolderPath = "C:\Users\ABC\Desktop\TXT"
 として、フォルダを準備して実行ください。

 エラー時の TextFolderPath の中身はどうなっているでしょうか。
(Mook) 2014/09/02(火) 17:45

 DeskTopPath を TextFolderPath に修正してください。
(cai) 2014/09/02(火) 17:54

 あっ、修正もれ・・・。
 申し訳ありませんm(_ _)m
(Mook) 2014/09/02(火) 17:57

修正してから、

If Dir(DeskTopPath) = "" Then MkDir DeskTopPath

を削除したらできました。

何度もありがとうございました。
(ゆういち) 2014/09/02(火) 19:03


 エラーの原因の修正は
  If Dir(TextFolderPath ) = "" Then MkDir TextFolderPath
 ですけれど、都合の良いように修正して使ってください(あくまでも Sample なので)。

 何かの対応に、内容を理解しておいたほうが良いとは思いますが・・・。
(Mook) 2014/09/02(火) 19:20

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.