2016-05-23 7 views
0

EXCELで抽出を構築しています。私はすでにそれについていくつかの質問をしてきましたが、私が進歩を続けていくうちに、私はそれがプロフェッショナルに見えることを妨げる障害にも直面しています。ここで が..私はSQL Serverからの日付を選択...私の抽出物がどのようなものであるかExcel抽出VBA - スペース/書式設定

Select Location,Name, Q1, Comments 
From tblInfo 

それから私は、エキス

With xlSheetInfo 
.Cells(5, 1).ColumnWidth = 50 
.Cells(5, 1).Value = "School" 
.Cells(5, 2).ColumnWidth = 25 
.Cells(5, 2).Value = "CLIENT NAME" 
.Cells(5, 3).Value = "Q1" 
.Cells(5, 4).Value="Comments" 
End with 

のヘッダーは、その後、私はデータを移入します。.. .usingレコードセット

While Not g_RS3.EOF 
    For i = xlCol To rCount 
     Cells(xlRow, xlCol).Value = g_RS3("School") 
     Cells(xlRow, xlCol).Font.Bold = True 
     xlCol = xlCol + 1 
     Cells(xlRow, xlCol).Value = g_RS3("LastName") & " ," & g_RS3("FirstName") 
     xlCol = xlCol + 1 
     Cells(xlRow, xlCol).Value = g_RS3("Q01") 
     xlCol = xlCol + 1 
     Cells(xlRow, xlCol).Value = g_RS3("Comments") 
     Cells(xlRow, xlCol).EntireColumn.AutoFit 
    xlrow = 1 
    g_rs3.movenext 
Next i 
Wend 

問題は、コメントセクションにあります。ユーザはコメントの複数の行/文を入力することができる。私が見ているのは、一部のユーザーがコメントを入力し、いくつかの改行を行い、同じレコードに対して別のコメントを入力するということです。したがって、スプレッドシートを見ると、これらの不要なスペースが表示されます。場合によっては、ユーザーはいくつかの改行を行い、コメントを入力します。この場合はプロフェッショナルでもないように見えます。私はすべてのスペースを取り除くためにつらいつもりです。そのため、数行のコメントがある場合は、そこにコメントが1つあります。ここ は、私がRTRIM、LTRIM、トリムで遊んが、動作していないよう

http://i.stack.imgur.com/T0dmS.png

...私がtalkinのよ何の画像です。別のことは、私はそこに任意の値を持つかもしれないということです(NULL)。何か案は ????

+0

最初に配列に格納し、行で 'split'休憩? – findwindow

+0

残念ながら、そのような先頭または末尾の改行をSQL​​文字フィールドから削除する簡単な方法はありません。 CLRを使う価値があると思われる場合は、CLRを使用してその機能を作成することができます。 Excelシートのコンテンツを作成する方法は、既に可能な限り遅い方法の1つですが、遅くすることは望ましくありません。たとえば、単一のCopyFromRecordSetまたはQueryTables.Add()を実行した場合には、より高速にすることができます。 SQL Serverにこのようなデータを入力しないようにして、代わりにエントリの編集を行うことをお勧めします。 –

+0

私はスピードがこの場合重要ではないと思う - これは古いVB6アプリケーションです - 私はそれが私の前に行われたのと同じ方法で抽出を作成しています。私はこの環境に慣れていない、他の人たちがしたことにちょうど従う。レコードセットのコピーを使ってこれをどのように行うのですか? – FatBoySlim7

答えて

1

モジュールでこの機能を入れて:

Public Function RemoveLf(strIn As String) As String 
    Dim strOut As String 
    strOut = Replace(strIn, vbLf, " ") 
    RemoveLf = strOut 
End Function 

次に、あなたのコードでは、この行置き換えることができます。この行では

Cells(xlRow, xlCol).Value = g_RS3("Comments") 

を:

Cells(xlRow, xlCol).Value = RemoveLf(g_RS3("Comments")) 

HTH

+0

CR、LFまたはCRLFを区別しないまたは後ろに文字列自体で? –

+0

これは素晴らしい機能ですが、画像で示した問題は修正されません。これは、2つのコメントの間にスペースがある場合は問題を修正したようですが、コメント自体の前にスペースがある場合はそうではありません。イメージが問題を示しています。この機能は、私のコメントの後にスペースがある場合にも機能しません。 – FatBoySlim7

+0

@CetinBasoz - はい、私はOPの質問を誤解しています。これは正規表現の仕事になります。最初の\ wか何かの前に\ sがあると思います。 –

関連する問題