2017-09-25 11 views
0

私はExcelのVBAの新機能です。私は、テキストファイルにExcelでセルの列を変換するオンラインスニペットの例から、私は一緒に石畳、このコードを使用しています:Excel to Text VBAが疑問符で始まる - 修正方法?

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 

問題は、私のExcelファイルの最初のセルは、このテキストが含まれていることである。

@ = 1

...そしてそれは、このような生成されたテキストファイルに表示:!?!

@ = 1

Excelファイル内のその他のものは問題なくテキストファイルに書き込まれますが、この疑問符はこのファイルが生成されているソフトウェアのインポート機能を駄目にします。

この疑問符が表示されなくなるためのアイデアはありますか?

答えて

1

「?」を削除しようとしましたか?など、ファイル内のコード、と:!

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

なぜ私は "?"追加されていますが、うまくいけば、このようなsoemthingはそれを取り除き、あなたが前進し続けることができます。 – Cyril

+0

さて、これ以上の背景。私が生成しているファイルはパラメータファイルです。インポートしようとしているソフトウェアからあらかじめ作成したパラメータファイルに貼り付けました。それが元の "@!= 1"の由来です。 もう一度見直して、最初の行を手動で入力しようとしましたが、Excelは関数を使用しようとしていると考えました。 @記号はExcelの関数指定子ですか? いずれにしても、私はそれを関数として扱わずにスクリプトを再作成することを義務付けていました。今回はうまくいった。 – VanGoghComplex

+0

@VanGoghComplex私は "@"記号が関数を指定すると信じています。私はそれがXMLの機能の一部であると言われてきましたが、私はXMLに慣れていないので、私はheresay以外の根拠はありません。私の他の提案は、置換がうまくいかなかった場合、アポストロフィを追加することでコメントアウトされたフィールドなので、すぐにヒットしてうれしく思いました! – Cyril

0

私は最初のセルは、@ = 1を含むと、このコードを実行し、それをテキストファイルに正しく書い@ = 1(無添加?)!。セルB2に印刷できない文字が含まれているかどうか確認しましたか?

0

解決策が見つかりました。 Excelは最初のセルの@!= 1を関数として扱っていましたが、関数関数ではありませんでした。私の最高の推測では、それがテキストファイルに解析されるので、そこに目に見えない文字を投げていたということです。問題のセルを'@!= 1に上書きすると、このトリックが実行されました。