Excel VBA 半角スベース、全角スペースを削除

B!

目次

VBAで、半角、全角のスペースを削除

こんにちは。伊川(@naonaoke)です。

今回はご視聴者様からの質問でした。

半角、全角スペースを削除したという内容でした。

問題提起

(株)IKAWAの柄久 瀬瑠子(エク セルコ)は上司から下記の依頼を受けました。

半角、全角を取り除くにはどいしたらいいのか?

どのようなコードを書くのか?

解決策

回答

Replace関数(文字を置き換える)StrConv(文字列を指定した文字種に変換する)。

 

空白を削除

会社のシステムから出力されるCSVファイルは、空白などが混在しています。

この空白を削除するのは大変ですが、VBAで簡単に削除できます。

Replace関数は、空白を何もない状態に置き換えます。

StrConvは、下の記事を参照してください。


空白を削除 作成手順その1 データベースを確認


住所録のスペースを削除します。

空白を削除 作成手順その2 VBAのコードを確認 その1

ExcelのVBA

Sub 取込()

Dim j As Long   '数値型の変数を設定
maxrow = Cells(Rows.Count, "A").End(xlUp).Row  'A列の最後までいう意味

For j = 6 To maxrow   'A列の6番目からA列の最後までをループさせる

'A列のスペース(半角、全角)取り除き、B列の6番目から表示させる

Cells(j, 2) = Replace(Replace(Cells(j, 1), " ", ""), " ", "")

'B列の文字を半角へ変換後、C列に表示する

Cells(j, 3) = StrConv(Cells(j, 2), 8)

Next j

 

空白を削除 作成手順その3 VBAのコードを確認

ACCESSのVBAを確認

Dim con As New ADODB.Connection 'ACCESSへ転送する決まり文句
Dim rs As New ADODB.Recordset   'ACCESSへ転送する決まり文句
Dim conStr As String

conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
ActiveWorkbook.Path & "\住所録.accdb" 'ACCESSへ転送するファイルを指定
con.Open ConnectionString:=conStr
rs.Open Source:="t_住所録転送受", ActiveConnection:=con, _
CursorType:=adOpenKeyset, LockType:=adLockOptimistic  'ACCESSへ転送するテーブルを指定

Dim i As Long
i = 6  '転送する場所を設定 Excelの6番目から

With rs
Do Until Cells(i, 1) = ""  'ExcelのA列が空白になるまで
.AddNew
.Fields("住所").Value = Cells(i, 3)  '住所というフィールドに転送
.Update
i = i + 1
Loop  'ループ
End With
rs.Close
con.Close
MsgBox "データ取込完了"

End Sub

 

ここがポイント

ここがポイント

半角、全角を削除してから、ACCESSへ転送したほうが、後々楽になります。転送後に、クエリで削除するほうが面倒です。

 

まとめ

今回のまとめ

今回は、半角、全角を変換しましたが、Replace関数は、いろいろなものに変換できます。覚えておくと便利です。

今回のサンプルファイルは、No114です。

毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

最新の記事はこちらから