2017-08-29 9 views
0

現在、私は古いExcelファイルのマクロコードを更新して新しいプログラムで使用できるようにしようとしています。私はVBの初心者ですが、大学のC++とJavaを知っていますので、このセクションのコードだけで作業することができました。したがって、基本的にExcel情報を.CVSに変換しています。変換を実行すると、Excelファイルの中にリストされているように、単一のセットではなく、両サイドに3つの引用符が付いているようです。文字列編集時の置換機能の問題

シンプルな修正を加えるには、この余分なコードセットを追加して各文字列で引用符を検索し、単一のセット以外のすべてを削除してください。代わりに1つだけの引用符が残るまで、文字列全体のセクションを置き換えているようです...問題は何か分かりますか?

これは、私が無限ループを修正するために移動して以来、特に不適切なコードであることがわかりましたが、今の主な懸念は、私がReplace関数を誤って使用していることです。

For X = 1 To 56 
    String2 = Sheets(1).Cells(X, 1) 
    Z = 1 
    Do While Z <> Len(String2) 
     If Mid(String2, Z, 1) = Chr(34) Then 
      If Mid(String2, Z + 1, 1) = Chr(34) Then 
       String2 = Replace(String2, """", "", Z, 1) 
         ' Replace(String2, Char(34) + Char(34), "", Z, 1) 
       Sheets(1).Cells(X, 1) = String2 
       Z = 1 
      Else 
       Z = Z + 1 
       End If 
     Else 
      Z = Z + 1 
      End If 
    Loop 
    Next 

ファイル情報が変更される:

"Tipton1にMH 7"、7.942,1,1,0.22
4.9,1,18.8
"一本のケーブル"、15,206.8
"" - ""、0,0 ^^これは、数回のループの後にReplace 関数によって食べられる文字列です。( "、0,0")まで続きます。 文字列は操作中に変更されません。
0 "" " - " "" 0 "" "" "" "" " - " "" 1 "0" "" "" "" "" "" "、200,5.1
5.1" "" "" "" "0 「0」、「 - 」、「0」、「0」、「0」、「0」、「0」、「0」、「0」、 "" "" "" "" "" "" "" "" "" "" "、" ""、 "100" 「0」、「N」「」、「」、「」、「〜」、「〜」、「〜」、「〜」、「〜」、「〜」、「〜」、 "、" "" "" "" "" "" "、" 10011.5
0 "、" "" 0 "、" 「0」「VD」「」「U」「」100,11.5
0「」「」「23.1」「N」「」 「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「100」 "0"、 "VD" ""、 "U" ""、100,3.6
0 "、" U "" "、120.8、" " 「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」「0」、 12,30.9
「Test4.pll」

+0

を取得するため.VALUE使用したいと思いますこれらのタグで説明されているようにVB.NETではありません。 VB.NETの場合は、おそらくCSVHelperのようなライブラリを使う方が良いでしょう。 [お問い合わせ]を読んで[ツアー]を受けてください – Plutonix

答えて

0

私はかなりあなたの質問から教えカントしかし、あなたがやろうとしているすべてのトリプル引用符を交換し、単一引用符で、あなたがループを行う全体を削除することができ、ちょうど置いている場合

string2=replace(string2,"""""""","""") 

forループ内ではなく、文字列全体の内容を置き換えるそれぞれのキャラクターだけ。

ので

For X = 1 To 56 
    String2 = Sheets(1).Cells(X, 1).value 

    String2 = Replace(String2, """""""", """") 

    Sheets(1).Cells(X, 1).value = String2 

Next 

あるいは

For X = 1 To 56 

    Sheets(1).Cells(X, 1).value = Replace(Sheets(1).Cells(X, 1).value, """""""", """") 

Next 

EDIT

ます。また、それはその後、エクセル、VBAの場合は、セル値

+0

うわー、ありがとう。そうですね、あなたが提案したメソッドははるかに単純で、.Valueが置換関数の問題だったようです。それは今正しく働いているので、ありがとう! –

+0

@IanSeanCoulterうれしかったです。答えが受け入れられたとマークすることができれば、将来他の人に役立つでしょう。それ以上の質問があれば、私にそれらをリンクしてください。 – Philip556677

関連する問題