目次
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なんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。