2017-04-05 51 views
2

我嘗試過多種變體,並且獲得相同的結果。最近迭代是這樣的:如何在不導出公式的情況下在Visual Basic Excel中導出已使用的值範圍

Sub CopyToCSV() 

' Copy and Paste Active Sheet 
ActiveSheet.Copy 
With ActiveSheet.UsedRange 
    .Value = .Value 
End With 

'The new workbook becomes Activeworkbook: 
With ActiveWorkbook 


     'Saves the new workbook to given folder/filename: 
    .SaveAs Filename:= _ 
    "C:\upload\19meat-kl.csv", _ 
    FileFormat:=xlCSV, _ 
    CreateBackup:=False 
     'Closes the file 
    .Close False 
    End With 
End Sub 

我的輸出一直在尋找這樣的:

Store,Department,Date,Category,Item Count,Retail Price,Dollars,Reduced Retail,Total Loss,Reason for loss 
18,90,2017-04-04,Meat,2,3,6,1,4,Out of Date 
18,90,2017-04-04,Pork,2,1.5,3,0.99,1.02,Other 
,,,,,,,,, 
,,,,,,,,, 
,,,,,,,,, 
,,,,,,,,, 
,,,,,,,,, 

的原因是,我的Excel文件中包含一些公式是這樣的:

=IF(D5>0,TODAY(),"") 

這種自動如果某些細胞向某些細胞中輸入任何細胞,則會填充某些細胞。這導致Excel認爲單元格被「使用」幷包含它們。我嘗試了幾個Worksheet.usedrange.values的變體,我得到相同的輸出,或者由於錯誤的代碼,我得到一個調試提示。我怎樣才能從輸出中刪除逗號?

+0

無需複製,剛saveas CSV看看有沒有幫助 – 0m3r

回答

1

編輯包括整個代碼

只是清除幾乎空白細胞

Sub CopyToCSV() 
    ' Copy and Paste Active Sheet 
    ActiveSheet.Copy 
    With ActiveSheet.UsedRange 
     .Value = .Value 
     .SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
    End With 

    'The new workbook becomes Activeworkbook: 
    With ActiveWorkbook 
     'Saves the new workbook to given folder/filename: 
     .SaveAs Filename:="C:\upload\19meat-kl.csv", FileFormat:=xlCSV, CreateBackup:=False 
     'Closes the file and discard changes (no needed any more) 
     .Close False 
    End With 
End Sub 
+0

@AaronMartin,你通過它了嗎? – user3598756

+0

我用ActiveWorkBook插入後,仍然得到包含公式的行的逗號。我刪除了With ActiveWorkBook和關聯的End With,但它仍然出錯。我把End With放在.SaveAs短語的下面,並且在End Sub之前,它仍然崩潰,但它生成的文件,只是不保存它。我可以看到,生成的Excel文件已刪除行,我只是無法得到它現在導出到CSV ...任何建議? –

+0

你必須插入它_before_'用ActiveWorkBook',即替換你的'With ActiveSheet.UsedRange ... End With'塊 – user3598756

0

除了複製和粘貼整個使用的範圍外,還可以從起始行復制到沒有公式的最後一行。這最後一排可以通過本作中找到:

Dim i As Integer 
    With Sheets(1).Columns("A").SpecialCells(xlCellTypeConstants) 
    i = .Cells(.Cells.Count).row 
    End With 
相關問題