Excel・マクロ
文字列のスペースを取り除くには、Trim関数を使います、この関数を使うと文字列の左右にあるスペースを取り除きます。
文字列の右のスペースを取り除くには、RTrim関数を使い、文字列の左のスペースを取り除くには、LTrim関数を使います。
文字列のすべてのスペースを取り除く時には、Replace関数を使用します。
また、ワークシートのTrim関数を使うと、文字列の左右のスペースを取り除き、文字列中に連続したスペースがある場合、
連続したスペースを1個のスペースにしてくれます。
マクロプログラム実行前の準備:
Excelを起動し、Sheet1のB列に下図の値を設定します。

次のテストデータを、テキストエディタを使い、コピー&ペーストして、適当な名前を付け、拡張子は、.txtにして保存してください。
012-1234 銀河市地球区日本136番地 独立行政法人 国立パソコン修理屋機構 名無 権平 副塾長 修理特科
012-1234 銀河市地球区日本136番地 独立行政法人 国立パソコン修理屋機構 名無 権平 副塾長 修理特科
012-1234 銀河市地球区日本136番地 独立行政法人 国立パソコン修理屋機構 名無 権平 副塾長 修理特科
012-1234 銀河市地球区日本136番地 独立行政法人 国立パソコン修理屋機構 名無 権平 副塾長 修理特科
012-1234 銀河市地球区日本136番地 独立行政法人 国立パソコン修理屋機構 名無 権平 副塾長 修理特科
次に、下記マクロプログラムをコピーして、Excel2000/2003の場合には、”ツール”の”マクロ”の”Visual Basic Editor”を選択して開き、
ペーストして、実行です。
Excel2007以降では、メニューに”開発”を追加して、"開発"→”Visual Basic”を選択して開き、ペーストして、実行です。
' main pro
Option Explicit
Dim itemNo As Integer
Dim MagNo As Integer
Dim wlen As Integer
Dim endrow As Integer
Dim wbuf As String
Dim mbuf(70) As String
Dim stbt As Double
Dim stlng As Double
Dim txlen As Integer
Dim txdev As String
Dim txfilename As String
Dim txdata As String
Dim FileExist As String
Dim txbookname As String
Sub main()
txbookname = Application.GetOpenFilename(, , , , False)
If txbookname = "False" Then Exit Sub
txlen = Len(txbookname)
txlen = txlen - 4
txdev = Mid(txbookname, 1, txlen)
txfilename = txdev + "01.txt"
Open txbookname For Input As #1
Open txfilename For Output As #2
Line Input #1, wbuf
Print #2, "***** 処理前の文字列 *****"
Print #2, wbuf
MagNo = 0
Sheets(1).Activate
Seek #1, 1
Do Until EOF(1)
clmbuf
Line Input #1, wbuf
wlen = Len(wbuf)
txdata = ""
stbt = 1
For itemNo = 1 To 6
stlng = Cells(itemNo, 2)
mbuf(itemNo) = Mid(wbuf, stbt, stlng)
stbt = stbt + stlng
sptori (MagNo) 'スペース取除き処理
Next itemNo
Select Case MagNo
Case Is = 0
Print #2, vbCrLf & vbCrLf & "文字列の左右、文中(文中の連続したスペースを、1個にする)のスペース取除き処理"
Case Is = 1
Print #2, vbCrLf & vbCrLf & "文字列のすべて(左右、文中)のスペースを取り除く"
Case Is = 2
Print #2, vbCrLf & vbCrLf & "文字列の左右のスペース取除き処理"
Case Is = 3
Print #2, vbCrLf & vbCrLf & "文字列の左側のスペース取除き処理"
Case Is = 4
Print #2, vbCrLf & vbCrLf & "文字列の右側のスペース取除き処理"
End Select
For itemNo = 1 To 5
txdata = txdata & mbuf(itemNo) & ","
Next itemNo
txdata = txdata & mbuf(6)
Print #2, txdata
MagNo = MagNo + 1
Loop
Close #1
Close #2
errproc:
End Sub
Sub clmbuf()
For itemNo = 1 To 70
mbuf(itemNo) = ""
Next
End Sub
Sub sptori(MagNo)
Select Case MagNo
Case Is = 0 '文字列の左右、文中(文中の連続したスペースを、1個にする)のスペース取除き処理
mbuf(itemNo) = Application.WorksheetFunction.Trim(mbuf(itemNo))
Case Is = 1 '文字列のすべて(左右、文中)のスペースを取り除く
mbuf(itemNo) = Replace(Replace(mbuf(itemNo), " ", ""), " ", "")
Case Is = 2 '文字列の左右のスペース取除き処理
mbuf(itemNo) = Trim(mbuf(itemNo))
Case Is = 3 '文字列の左側のスペース取除き処理
mbuf(itemNo) = LTrim(mbuf(itemNo))
Case Is = 4 '文字列の右側のスペース取除き処理
mbuf(itemNo) = RTrim(mbuf(itemNo))
End Select
End Sub