EXCEL-VBA如何導出到CSV…自定義列范圍?

我有下面的VBA宏,我從網上得到的,很久以前。。。還有它′在Excel中工作正常:

Sub ExportCSV()

Dim MyFileName As String
Dim CurrentWB As Workbook, TempWB As Workbook

Set CurrentWB = ActiveWorkbook
ActiveWorkbook.ActiveSheet.UsedRange.Copy

Set TempWB = Application.Workbooks.Add(1)
With TempWB.Sheets(1).Range("A1")
    .PasteSpecial xlPasteValues
    .PasteSpecial xlPasteFormats
End With

MyFileName = CurrentWB.Path & "\FOLDER\" & Left(CurrentWB.Name, InStrRev(CurrentWB.Name, ".") - 1) & ".csv"
'Optionally, comment previous line and uncomment next one to save as the current sheet name
'MyFileName = CurrentWB.Path & "\" & CurrentWB.ActiveSheet.Name & ".csv"


Application.DisplayAlerts = False
TempWB.SaveAs Filename:=MyFileName, FileFormat:=xlCSVUTF8, CreateBackup:=False, Local:=False
TempWB.Close SaveChanges:=False
Application.DisplayAlerts = True
End Sub

我只需要編輯/修改它,以獲得范圍內的列“A:AV”,以減少CSV文件的大小。。。簡單地說,唐′我不知道怎么做!

有人能幫我嗎?

? 最佳回答:

將列導出到CSV

  • 調整常量部分中的值。
  • 如果列表分隔符是分號,則可能需要使用Local:=True。
Option Explicit

Sub ExportColumnsToCSV()
    
    Const sfRow As Long = 1
    Const sColsList As String = "A:F,H:I,V,AM:AV"
    
    Const dFirst As String = "A1"
    
    
    Dim sCols() As String: sCols = Split(sColsList, ",")
    
    Dim sws As Worksheet: Set sws = ActiveSheet
    Dim swb As Workbook: Set swb = sws.Parent
    
    Dim srrg As Range
    Dim slCell As Range
    Dim srCount As Long
    
    With sws.Rows(sfRow)
        Set slCell = .Resize(.Worksheet.Rows.Count - .Row + 1) _
            .Find("*", , xlFormulas, , xlByRows, xlPrevious)
        If slCell Is Nothing Then
            MsgBox "No data in worksheet.", vbCritical, "Export to CSV"
            Exit Sub
        End If
        srCount = slCell.Row - .Row + 1
        Set srrg = .Resize(srCount)
    End With
    
    Dim srg As Range
    Dim n As Long
    
    For n = 0 To UBound(sCols)
        If srg Is Nothing Then
            Set srg = Intersect(srrg, sws.Columns(sCols(n)))
        Else
            Set srg = Union(srg, Intersect(srrg, sws.Columns(sCols(n))))
        End If
    Next n
    
    Dim dwb As Workbook: Set dwb = Application.Workbooks.Add
    srg.Copy
    dwb.Worksheets(1).Range(dFirst).PasteSpecial xlPasteValues
    
    Dim dFolderPath As String: dFolderPath = swb.Path & "\Folder\"
    
    On Error Resume Next
    MkDir dFolderPath
    On Error GoTo 0
    
    Dim dFilePath As String
    dFilePath = dFolderPath _
        & Left(swb.Name, InStrRev(swb.Name, ".") - 1) & ".csv"
    ' Optionally, out-comment previous line and uncomment next one
    ' to save with the current worksheet name.
    'dFilePath = dFolderPath & sws.Name & ".csv"

    Application.DisplayAlerts = False
    dwb.SaveAs Filename:=dFilePath, FileFormat:=xlCSVUTF8, Local:=False
    dwb.Close SaveChanges:=False
    Application.DisplayAlerts = True

End Sub
主站蜘蛛池模板: 国产日韩视频一区| 一区二区三区四区精品视频| 在线视频一区二区| 亚洲AV无码一区二区三区网址| 无码人妻aⅴ一区二区三区有奶水| 国产天堂一区二区综合| 正在播放国产一区| 亚洲欧美日韩中文字幕一区二区三区| 麻豆视传媒一区二区三区| 亚洲AV综合色区无码一区爱AV| 亚洲av高清在线观看一区二区| 亚洲欧洲无码一区二区三区| 精品不卡一区二区| 亚洲福利电影一区二区?| 国偷自产av一区二区三区| 一级特黄性色生活片一区二区 | 亚洲一区二区三区无码影院| 亚洲日韩AV一区二区三区四区| 日韩精品一区二区三区中文| 国产精品女同一区二区 | 亚洲福利一区二区精品秒拍| 中文字幕精品一区二区三区视频| 成人一区专区在线观看| 亚洲av无码一区二区三区天堂| 亚洲狠狠狠一区二区三区| 久久国产精品无码一区二区三区| 国产一区二区精品久久岳| 日韩精品人妻一区二区中文八零 | 在线观看日韩一区| 精产国品一区二区三产区| 蜜桃传媒一区二区亚洲AV| 亚洲乱色熟女一区二区三区蜜臀| 亚洲日韩一区精品射精| 亚洲AV日韩综合一区尤物| 在线免费一区二区| 视频在线观看一区二区| 精品国产一区二区三区AV性色| 久久se精品一区二区| 亚洲一区二区成人| 成人一区专区在线观看 | 亚洲一区二区三区免费在线观看|