这里有2种方式,以节省列到文本文件:
Option Explicit
Private fso As Variant
Sub saveColsToText()
Const START_COL As Long = 2
Const START_ROW As Long = 2
Const FNAME_ROW As Long = 2
Const F_PATH As String = "C:\Temp\"
Dim ws1 As Worksheet, ws2 As Worksheet, thisCol As Range
Dim lr As Long, lc As Long, i As Long, colStr As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
With ws1
lc = .Cells(1, .Columns.Count).End(xlToLeft).Column
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = START_COL To lc
Set thisCol = .Range(.Cells(1, i), .Cells(lr, i))
colStr = Join(Application.Transpose(thisCol.Value2), vbCrLf)
saveColToFile1 F_PATH, ws2.Cells(FNAME_ROW, i).Value2 & ".txt", colStr
Next
End With
End Sub
Sub saveColToFile1(ByVal fPath As String, ByVal fName As String, ByVal colText As String)
Dim fileID As Variant
If Len(Dir(fPath)) = 0 Then MkDir fPath
Set fileID = fso.CreateTextFile(fPath & fName, True)
fileID.Write colText
fileID.Close
Set fileID = Nothing
End Sub
Sub saveColToFile2(ByVal fPath As String, ByVal fName As String, ByVal colText As String)
Open fPath & fName For Output As #1
Write #1, colText
Close #1
End Sub
'------------------------------------------------------------------------------------------
嘿@CDH,欢迎SO!你更具体地经历了什么错误?什么是'catch'? – Klaster
不清楚?像这样说... 1.你需要什么...... 2.你的代码是什么...... 3.代码的问题是什么......!这样发布。 –
嗨@Klaster,我有一张c.400列的表格,我想将每列保存为一个.txt文件。问题在于我需要使用另一个工作表上指定的名称来保存文件(全部按照列的顺序)。它需要两个循环 - 一个保存列和一个寻找名称。我认为。道歉,我对VBA很陌生。 – CDH