2016-08-01 8 views
0

Guten Tag enthalten alle,Der Versuch, mit nur Zellen, die einen Bereich in Excel in CSV zu exportieren, die Daten

Ich baue ein Excel-Blatt für meine Mitarbeiter CSV-Dateien zu erzeugen, zu verwenden. Ich brauche eine Ausgabe mit Kopfzeile und dann alle Daten aus dem Blatt. Es werden nicht mehr als 40 Zeilen sein, aber weniger Zeilen. Momentan habe ich viele Formeln in meinem Arbeitsblatt, die meinen Kollegen bei der Erstellung von Benutzernamen/etc aus den Eingabedaten schwer machen. Ich muss sie auf eine Schaltfläche klicken und die CSV-Datei am anderen Ende abrufen. Meine aktuellen Probleme sind wie folgt.

1.) meine CSV enthält doppelte Anführungszeichen für jedes Feld, obwohl Kommas nicht in den Eingabedaten enthalten sein sollten. Ich muss das verhindern, da das Programm, das wir diesen csv-Dateien zuführen, die Anführungszeichen AT ALL nicht mag. Ja, ich weiß, Sie können es in Notepad öffnen und alle ersetzen, um sie zu entfernen, aber ich versuche, eine Ein-Klick-Lösung zu bauen, da einige der Leute, die dies verwenden, nicht sehr technisch versiert sind.

2.) Mein Makro exportiert derzeit alle vierzig Datenzeilen. Ich brauche es, um nur die Zeilen zu exportieren, die Daten enthalten. Theoretisch mit den Formeln gebaut sollte es keine "teilweise" Zeilen, nur eine vollständige Zeile oder eine leere Zeile.

3.) Wenn ich die CSV-Datei erzeuge, wird kein Dateityp angehängt, ich brauche eine .txt. Dateityp, wenn überhaupt möglich, wie auch hier ist das Programm, das wir ihnen zuführen, sehr wählerisch.

Sub CommandButton1_Click() 
Dim filename As String 
Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer 

filename = InputBox("Please enter file name", "Save as CSV", "CSV_" & Format(Now, "DD_MM_yyyy")) 
myFile = Application.DefaultFilePath & filename 

Set rng = Range("A1:J41") 

Open myFile For Output As #1 

    For i = 1 To rng.Rows.Count 
     For j = 1 To rng.Columns.Count 

      cellValue = rng.Cells(i, j).Value 

       If j = rng.Columns.Count Then 
        Write #1, cellValue 
         Else 
        Write #1, cellValue, 
       End If 
     Next j 
    Next i 

Close #1 

End Sub

+0

Woher kommen diese doppelten Anführungszeichen? Werden sie angezeigt, wenn Sie Ihre .csv-Datei ausfüllen oder befinden sie sich in den vorhandenen cellValues? –

+0

Nach einer halben Stunde experimentieren mit Ihrem Code, dachte ich, dass es als eine wirklich einfache Möglichkeit, dies zu tun. Verwenden Sie einfach "Speichern unter" -> "CSV auswählen" -> Wenn Ihre Arbeitsmappe mehrere Blätter enthält, wird eine Eingabeaufforderung angezeigt, in der Sie gefragt werden, ob Sie nur das aktive Arbeitsblatt speichern möchten. Drücken Sie 'Ja' -> Sie sind fertig –

+0

Nur ein kurzer Bereich der Klärung. Sie haben gesagt, dass möglicherweise nicht alle 40 Zeilen Daten enthalten. Sind die Daten in aufeinanderfolgenden Zeilen oder könnte es Leerzeichen zwischen? wenn es 5 Reihen von Daten gibt, sind sie in Reihen 1-5 oder könnten sie in Reihen 1, 2, 4, 6, 9 sein? – viper941

Antwort

0

Dies ist, was würde Ihr Code wie zu suchen. Leider konnte ich die Anführungszeichen nicht loswerden, vielleicht hat jemand anderes eine Idee dafür.

Sub csvExport() 
Dim filename As String 
Dim myFile As String, cellValue As Variant, i As Integer, j As Integer 
Dim ws As Worksheet 

filename = "\" & InputBox("Please enter file name", "Save as CSV", "CSV_" & Format(Now, "DD_MM_yyyy")) & ".txt" 
myFile = Application.DefaultFilePath & filename 

    Set ws = Worksheets("YOURSHEETNAME") 

    With ws 

    Open myFile For Output As #1 

    For i = 1 To .UsedRange.Rows.Count 
     For j = 1 To .UsedRange.Columns.Count 

      cellValue = .Cells(i, j).Value 
       If j = .UsedRange.Columns.Count Then 
        Write #1, cellValue 
         Else 
        Write #1, cellValue, 
       End If 
     Next j 
    Next i 

Close #1 
End With 

End Sub