2016-08-02 12 views
-1

Ich muss Daten von meinem Excel-Blatt in eine CSV exportieren. Der Code, den ich habe, macht das. Aber einige der Spalten in meinen Excel-Daten enthalten Formeln. Also, wenn ich nach "CSV" exportiere, bekomme ich "0" anstelle des Wertes.Kopieren von Excel-Daten in CSV mit Pastenspecial

Gibt es eine pastespecial Unterstützung für csv?! Oder eine andere Möglichkeit, Zellenwerte in csv zu exportieren.

Mein aktueller Code ist:

Sub submit_task() 
' 
' submit_task Macro 
' 

' 
Dim Filename As String 
Dim WB As Workbook 

Application.DisplayAlerts = False 

Filename = "Job_Details.csv" 

'Copy the contents of required sheet ready to paste into the new CSV 
Sheets("output_sheet").Range("A3:C4").Copy 'Define your own range 

'Open a new XLS workbook, save it as the file name 
Set WB = Workbooks.Add 
With WB 
    .Title = "Job Details" 
    .Subject = "Task Submitted" 
    .Sheets(1).Select 
    ActiveSheet.Paste 
    .SaveAs "C:\UI\" & Filename, xlCSV 
    .Close 
End With 

Application.DisplayAlerts = True 

End Sub 
+0

Versuch 'ActiveSheet.Paste' mit' ActiveSheet.Range ("A1") zu ersetzen. Paste xlPasteValues' – Slai

Antwort

1

die PasteSpecial Methode versuchen.

Siehe die Ressourcen hier auf MSDN: https://msdn.microsoft.com/en-us/library/office/ff839476.aspx

siehe auch hier: Excel VBA Copy Paste Values only(xlPasteValues)

Sie wollen wahrscheinlich versuchen: ActiveSheet.PasteSpecial xlPasteValues

So:

'Open a new XLS workbook, save it as the file name 
Set WB = Workbooks.Add 
With WB 
    .Title = "Job Details" 
    .Subject = "Task Submitted" 
    .Sheets(1).PasteSpecial xlPasteValues 
    .SaveAs "C:\UI\" & Filename, xlCSV 
    .Close 
End With 
+0

Ich habe bereits versucht, dass. Für pasteSpecial erhalte ich den Fehler, dass "PasteSpecial-Methode der Arbeitsblattklasse fehlgeschlagen ist". – SanjChau

+0

@SanjChau Ich habe mehr Beispielcode für Sie hinzugefügt zu versuchen – GisMofx

+0

immer noch den gleichen Fehler :( – SanjChau

0

I getestet dies und es erzeugt nicht aß einen Fehler. Ich denke, das Problem, auf das Sie stoßen, ist, wie Excel die Interaktion mit einer neuen Arbeitsmappe behandelt, die von Grund auf neu erstellt wurde, und dann einfügen. In diesem Fall habe ich gerade ein neues Blatt erstellt, die Daten in dieses neue Blatt kopiert und das Blatt dann in eine eigene Arbeitsmappeinstanz verschoben. Die neue Instanz wird dann bei der gewünschten CSV gespeichert und geschlossen.

Sub Create_CSV() 
    Application.DisplayAlerts = False 
'Select & copy data for CSV 
    Range("A3:C4").Select 
    Selection.Copy 
'Add a new sheet to become your csv and paste data 
    Sheets.Add After:=ActiveSheet 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
    Application.CutCopyMode = False 
'Move the sheet into it's own instance 
    ActiveSheet.Move 
'Rename the tab 
    ActiveSheet.Name = "Task Submitted" 
'Save the WB as a CSV and close 
    ActiveWorkbook.SaveAs Filename:="C:\UI\Job_Details.csv", FileFormat:= _ 
    xlCSVMSDOS, CreateBackup:=False 
    ThisWorkbook.Saved = True 
    ActiveWindow.Close 
    Application.DisplayAlerts = True 
End Sub