仅在Excel工作表中将可见列作为CSV文件复制到VB6中,而不使用复制命令

我有Excel工作表对象,其中一些列处于不可见模式。 我想将这些工作表保存为仅包含可见列的CSV文件。 我的主要要求是不使用Copy方法 ,csv文件应该包含所有具有值和格式的可见列。

Private Sub SaveAsCSV_TSA(ByVal xl As Excel.Application, ByVal xlsheet As Excel.Worksheet, ByVal CSVSavePath As String) On Error GoTo BottomLine Set xlwbook1 = xl.Workbooks.Add Dim xlsheet1 As Worksheet Set xlsheet1 = xlwbook1.Sheets.Item(1) xlsheet1.Activate xlsheet.Cells.SpecialCells(xlCellTypeVisible).Copy xlsheet1.Paste xl.CutCopyMode = False xlwbook1.SaveAs FileName:=CSVSavePath, FileFormat:=xlCSV xlwbook1.Close SaveChanges:=False Set xlwbook1 = Nothing Set xlsheet1 = Nothing BottomLine: If Not xlsheet1 Is Nothing Then Set xlsheet1 = Nothing If Not xlwbook1 Is Nothing Then Set xlwbook1 = Nothing If Err.number > 0 And Err.number <> cdlCancel Then MsgBox (Err.number & Chr(13) & Err.Description & " - Create_TS_Turn_file" & vbCrLf & "Line Number: " & Erl) End If End Sub 

在上面的例子中,xlsheet是一个源文件,而xlsheet1是一个目标文件。

注意:为什么我不需要使用复制命令。 因为我不止一次地以不同的工作表作为参数,以(1000)次左右的方式调用上述方法。 (我已经得到了这个问题,因为无法在这个应用程序运行的机器上进行其他复制/粘贴工作,导致用xlsheet.Cells.SpecialCells(xlCellTypeVisible).Copy内容replace原来的复制内容。

在这里输入图像说明

请帮我解决这个问题..我需要尽快解决它。 提前致谢!

根据OP的进一步规格进行编辑

不太确定你的问题,但也许这可以帮助:

 Option Explicit Private Sub SaveAsCSV_TSA(ByVal xl As Excel.Application, ByVal xlsheet As Excel.Worksheet, ByVal CSVSavePath As String) Dim xlwbook1 As Workbook Dim xlsheet1 As Worksheet Dim cell As Range Dim colsAddr As String On Error GoTo BottomLine Set xlwbook1 = xl.Workbooks.Add With xlwbook1 xlsheet.Copy After:=.Sheets.Item(1) With .ActiveSheet '<~~ here starts the new "treatment" With .UsedRange For Each cell In .Rows(1).Cells '<~~ loop through first row cells If cell.EntireColumn.Hidden Then colsAddr = colsAddr & cell.EntireColumn.Address & "," '<~~ store cell entire column address if hidden Next cell .Value = .Value '<~~ get rid of formulas and keep only their resulting values End With If colsAddr <> "" Then .Range(Left(colsAddr, Len(colsAddr) - 1)).Delete '<~~ delete hidden columns, if any End With '<~~ here ends the new "treatment" .SaveAs Filename:=CSVSavePath, FileFormat:=xlCSV .Close SaveChanges:=False End With Set xlwbook1 = Nothing Set xlsheet1 = Nothing BottomLine: If Not xlsheet1 Is Nothing Then Set xlsheet1 = Nothing If Not xlwbook1 Is Nothing Then Set xlwbook1 = Nothing If Err.Number > 0 And Err.Number <> xlCancel Then MsgBox (Err.Number & Chr(13) & Err.Description & " - Create_TS_Turn_file" & vbCrLf & "Line Number: " & Erl) End If End Sub 

我build议打电话如下

 Sub main() Application.ScreenUpdating = False '<~~ stop screen updating and speed things up SaveAsCSV_TSA Application, ActiveSheet, "yourpath" Application.ScreenUpdating = True '<~~ resume screen updating End Sub