2011-08-22 48 views
4

在Excel中,我有列A中的文章名稱列表和列B中的免責聲明。現在,對於列A中的每篇文章,我想創建一個文本文件, A是文件的標題,B是免責聲明,是文件的內容。將Excel行輸出到一系列文本文件

這可能嗎?

這個想法是,我有幾百這些,我想讓我更容易。

如果Excel不適合這個,任何人都可以提出一種替代方案嗎? (可能記事本++有一個功能,可以幫助?)

回答

8
Sub Export_Files() 
    Dim sExportFolder, sFN 
    Dim rArticleName As Range 
    Dim rDisclaimer As Range 
    Dim oSh As Worksheet 
    Dim oFS As Object 
    Dim oTxt As Object 

    'sExportFolder = path to the folder you want to export to 
    'oSh = The sheet where your data is stored 
    sExportFolder = "C:\Disclaimers" 
    Set oSh = Sheet1 

    Set oFS = CreateObject("Scripting.Filesystemobject") 

    For Each rArticleName In oSh.UsedRange.Columns("A").Cells 
     Set rDisclaimer = rArticleName.Offset(, 1) 

     'Add .txt to the article name as a file name 
     sFN = rArticleName.Value & ".txt" 
     Set oTxt = oFS.OpenTextFile(sExportFolder & "\" & sFN, 2, True) 
     oTxt.Write rDisclaimer.Value 
     oTxt.Close 
    Next 
End Sub 
+0

你的明星,謝謝@ ;-) –

+0

任何時間都可以讓Wayne!樂意效勞! – transistor1

+0

+1好方法。 – brettdj

2

使用變體陣列對速度的另一種方法,和給定的唯一文件是需要創建的替代FileSystemObject

Sub DataDump() 

    Dim X 
    Dim lngRow As Long 
    Dim StrFolder As String 

    StrFolder = "C:\temp" 
    X = Range([a1], Cells(Rows.Count, 2).End(xlUp)) 
    For lngRow = 1 To UBound(X) 
    Open StrFolder & "\" & X(lngRow, 1) & ".txt" For Output As #1 
    Write #1, X(lngRow, 2) 
    Close #1 
    Next 
    End Sub 
+0

謝謝 - 這對我很好 - 試圖讓代碼重複每一行數據,但它只是爲第2行創建文件。任何幫助將不勝感激! – Dorje

+0

@dorje您是否在A2以下的單元格中有數據? – brettdj

+0

你好brettdj,我想複製完全相同的東西,我不能讓這個工作超過兩行。我在一個mac上工作,所以我使用「:」修復了路徑,但是這個宏不會運行超過兩行。我被卡住了52錯誤。有任何想法嗎 ? – Stanislasdrg

0

我沒有足夠的代表評論他人的帖子,所以我必須發佈這個答案。 @晶體管1接受的答案的作品;然而,在Excel 2010中需要改變

Set oSh = Sheet1

Set oSh = ThisWorkbook.Worksheets("worksheet")

當 「工作」 是工作表的名稱的數據上。