首页 > 解决方案 > VBA将单元格值保存到新文件而不格式化

问题描述

我在 Excel 中有一个数据表,需要将其上传到将转换为网页的某个地方。此表的其中一列包含 HTML 代码。对于此列中的每个单元格,我需要从单元格的内容创建一个 html 文件,而不需要额外的格式。然后我需要用新文件名替换该单元格的内容。

目前我有以下内容:

Sub ExportRangetoFile()
'Update 20130913
Dim wb As Workbook
Dim saveFile As String
Dim WorkRng As Range
On Error Resume Next

Set WorkRng = Application.Selection

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wb = Application.Workbooks.Add

For i = 1 To WorkRng.Rows.Count
    WorkRng.Cells(RowIndex:=i, ColumnIndex:="A").Copy
    wb.Worksheets(1).Paste
    wb.SaveAs Filename:="E:\Test\" & i, CreateBackup:=False
Next

wb.Close
Application.CutCopyMode = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

但是 wb.SaveAs 函数会根据输入的 Format 参数自动格式化,或者如果没有参数,它会格式化为当前版本的 excel。我只想将单元格的内容输出到一个没有格式的纯文本文件中;我怎样才能做到这一点?

标签: excelvba

解决方案


从单元格值创建文本文件

  • 在使用代码之前,调整这两个常量。

编码

Option Explicit

Sub exportRangetoFile()
    
    Const FolderPath As String = "F:\Test\2020\64976794\"
    Const FileExtension As String = ".txt"
    
    If TypeName(Selection) = "Range" Then
        
        Dim rng As Range
        Set rng = Selection
        
        Dim Data As Variant
        If rng.Rows.Count > 1 Then
            Data = rng.Value
        Else
            ReDim Data(1 To 1, 1 To 1)
            Data(1, 1) = rng.Value
        End If
        
        With CreateObject("Scripting.FileSystemObject")
            Dim TextFile As Object
            Dim i As Long
            For i = 1 To UBound(Data, 1)
                Set TextFile = .CreateTextFile(FolderPath & i _
                  & FileExtension, True)
                TextFile.Write Data(i, 1)
                TextFile.Close
            Next i
        End With
    
    End If

End Sub

推荐阅读