エクセルの改行は、
WIN で作成したものを、MACで開いた場合に、改行以降が文字化けしてしまうとのこと。
MAC OD
WIN OD OA
エクセルの関数では、対応が出来ないので、VBAで対応することにしました。
列と、行の範囲をして、マクロを実行します。
処理するシートを、"Master" シートとしています。
処理する行をエクセルのセルに名前をつけておきます。
"RowStart"
"RowEnd"
"ColumnStart"
"ColumnEnd"
名前をつけておくと、
VBAで、エクセルの名前が使えるので便利なことと、
エクセルシートのシートで、挿入、削除などで、位置がかわっても良い。
という利点があります。
結果の確認方法
エクセルファイルでは、変更が出来たかどうかが、わかりませんので、Bz エディタなどの、制御コードがわかるエディタで確認します。
' Change Cr Code Master Data
' Excel to Mac Code
' 0D 0F to OD
Sub Mac_CrCodeWord()
Dim i
Dim i2
Dim ws_Edit As Worksheet ' Master Sheet
Dim ws_Main As Worksheet ' Master Sheet
Set ws_Edit = Worksheets("Edit")
Set ws_Main = Worksheets("Master")
' Row
Dim DT_max
Dim DT_min
' Column
Dim DtMaxColumn
Dim DtMinColumn
Dim column1
Dim StrDt
Dim StrDtAfter
' column setting 列の設定
DtMinColumn = ws_Edit.Range("ColumnStart")
DtMaxColumn = ws_Edit.Range("ColumnEnd")
' Data Min Max From Edit1 Sheet
' エクセルのシートに名前をつけておく
DT_max = ws_Edit.Range("RowEnd")
DT_min = ws_Edit.Range("RowStart")
'
For i = DT_min To DT_max ' Processing for each row
For column1 = DtMinColumn To DtMinColumn ' Processing for each column
StrDtAfter = ""
StrDt = ws_Main.Cells(i, column1)
If InStr(StrDt, vbCrLf) Then
StrDtAfter = Replace(StrDt, vbCrLf, vbCr) '0D form OD 0A
ws_Main.Cells(i, column1) = StrDtAfter
End If
Next column1 ' Processing for each column
Next i ' Processing for each row
End Sub
コメント
コメントを投稿