20170624xlVBA生成通讯录文件

Public Sub QqYunContactTransferCsvFile()
'应用程序设置
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual

    '错误处理
    'On Error GoTo ErrHandler

    '计时器
    Dim StartTime, UsedTime As Variant
    StartTime = VBA.Timer

    '变量声明
    Dim Wb As Workbook
    Dim Sht As Worksheet
    Dim Rng As Range
    Dim Arr As Variant
    Dim EndRow As Long
    Const SplitCount As Long = 100
    Dim RecordIndex As Long
    Dim FileCount As Long
    Dim EachLine As String
    Dim WholeLine As String
    Dim i As Long, j As Long
    Dim HeadLine As String

    '实例化对象
    Set Wb = Application.ThisWorkbook

    Set Sht = Wb.Worksheets("通讯录")

    With Sht
        EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
        Set Rng = .Range("A1:Y" & EndRow)
        Arr = Rng.Value
        RecordIndex = 0
        FileCount = 0
        HeadLine = ""
        For j = LBound(Arr, 2) To UBound(Arr, 2)
            HeadLine = HeadLine & """" & Arr(1, j) & ""","
        Next j
        WholeLine = HeadLine

        For i = LBound(Arr) + 1 To UBound(Arr)
            RecordIndex = RecordIndex + 1
            EachLine = ""
            For j = LBound(Arr, 2) To UBound(Arr, 2)
                EachLine = EachLine & """" & Arr(i, j) & """," '有双引号
                'EachLine = EachLine & Arr(i, j) & ","'无双引号
            Next j
            WholeLine = WholeLine & EachLine & vbCrLf

            If RecordIndex Mod SplitCount = (SplitCount - 1) Or i = UBound(Arr) Then '生成文件的条件
                FileCount = FileCount + 1
                Open Wb.Path & "\" & FileCount & ".csv" For Output As #1     '生成CSV文件
                Print #1, WholeLine   '写入CSV的内容
                Close #1    '关闭文件句柄
                WholeLine = HeadLine
            End If

        Next i
    End With



    '运行耗时
    UsedTime = VBA.Timer - StartTime
   

ErrorExit:        '错误处理结束,开始环境清理
    Set Wb = Nothing
    Set Sht = Nothing
    Set Rng = Nothing

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.Calculation = xlCalculationAutomatic
    Exit Sub
ErrHandler:
    If Err.Number <> 0 Then
        MsgBox Err.Description & "!", vbCritical, "错误提示!"
        'Debug.Print Err.Description
        Err.Clear
        Resume ErrorExit
    End If
End Sub

  

posted @ 2017-07-07 00:19  wangway  阅读(190)  评论(0编辑  收藏  举报