2017-09-25 1 views
0

Ich bin sehr neu zu VBA in Excel. Ich verwende diesen Code ich zusammen online von Beispiel gepflasterten Schnipseln eine Spalte von Zellen in Excel in eine Textdatei zu konvertieren:Excel zu Text VBA vorangestellt mit Fragezeichen - wie zu beheben?

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

Set fsT = CreateObject("ADODB.Stream"): 'Create Stream object 
fsT.Type = 2: 'Specify stream type – we want To save text/string data. 
fsT.Charset = "utf-8": 'Specify charset For the source text data. 

FPath = "C:\WHIT\ParamGen" 
FName = Sheets("Sheet1").Range("b49").Text 

myFile = FPath & "\" & FName 

Set rng = Range("B2: B42 ") 

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 
    Print #1, cellValue 
Else 
    Print #1, cellValue, 
End If 

    Next j 
Next i 

Close #1 

End Sub 

Das Problem ist, dass die erste Zelle in meiner Excel-Datei enthält den Text:

@ = 1

... und es zeigt in der generierten Textdatei wie folgt auf:!?!

@ = 1

Alles andere in der Excel-Datei wird ohne Probleme in die Textdatei geschrieben, aber dieses Fragezeichen durchkreuzt die Importfunktion in der Software, für die diese Datei erzeugt wird.

Haben Sie irgendwelche Ideen, dieses Fragezeichen verschwinden zu lassen?

Antwort

1

Haben Sie versucht, das "?" mit Code in der Datei, wie zum Beispiel:

If left(cellvalue,1)="?" then 
    application.substitute(cellvalue,"?","") 
end if 
+0

Ich weiß nicht, warum das "?" wird hinzugefügt, aber hoffentlich wird so etwas los und Sie können weiterkommen. – Cyril

+0

Okay, also weiter Hintergrund. Die Datei, die ich erstelle, ist eine Parameterdatei, und ich habe eine vorher erstellte Parameterdatei von der Software eingefügt, in die ich versuche zu importieren. Hier kommt das Original "@! = 1" her. Nachdem ich zurück gegangen bin, um es noch einmal zu betrachten, habe ich versucht, diese erste Zeile manuell einzugeben, und Excel dachte, dass ich versuchte, eine Funktion zu verwenden. Ist das @ -Zeichen ein Funktionsbezeichner in Excel? Wie auch immer, ich ging es mit dem obligatorischen ', um es nicht als eine Funktion zu behandeln und das Skript zu wiederholen. Es funktionierte dieses Mal gut. – VanGoghComplex

+0

@VanGoghComplex Ich glaube, dass das "@" Symbol eine Funktion bezeichnet; Mir wurde gesagt, dass dies ein Teil der XML-Funktionalität ist, obwohl ich keine Basis habe, die über Heresay hinausgeht, da ich mit XML nicht vertraut bin. Mein anderer Vorschlag, wenn die Ersetzung nicht funktionierte, bestand darin, den Apostroph anzuhängen, so dass es ein auskommentiertes Feld wäre, also bin ich froh, dass Sie sofort getroffen und gearbeitet haben! – Cyril

0

lief ich diesen Code mit der ersten Zelle enthält @ = 1 und es geschrieben richtig in die Textdatei als @ = 1 (kein zugesetztes?)!. Haben Sie überprüft, ob Zelle B2 nicht druckbare Zeichen enthält?

0

Ich fand eine Lösung. Excel behandelte das @! = 1 in der ersten Zelle als eine Funktion, aber es war keine funktionale Funktion. Meine beste Vermutung ist, dass es dort ein unsichtbares Zeichen warf, als es es in eine Textdatei zerlegte. Das Überschreiben der störenden Zelle mit '@! = 1 hat den Trick gemacht.