はじめに
Rにopenxlsxのパッケージを読み込み、loadworkbookでエクセルファイルを読み込むと下記のようなエラーメッセージが表示され、読み込めないことがあったので、当方の環境でこのエラーを解消した方法になります。
Error in substring(x[ind], so, eo) :
invalid multibyte string at '<83><e3><82>ッ"/>'
環境
R 4.1.2
openxlsx 4.2.5.1
Excel2016
取り込みたいエクセルファイル
対処
エクセルファイルのテーマを変更する
-
日本語文字用のフォント
の見出しのフォント(日本語)
と本文のフォント(日本語)
に「Yu Gothic」と入力し、保存
をクリックする。
(プルダウンから選択することはできないので、「Yu Gothic」と入力すること!!)
修正したエクセルファイルをもう一度取り込みなおす
最後に
Excel2016以降では、エクセルのデフォルトテーマのフォントに「游ゴシック」が採用されています。
そのため、何も気にせずExcel2016以降で作成されたエクセルファイルのテーマが「游ゴシック」になっており、そのファイルをopenxlsxで読み込むと「游」の文字コードが対応していないためにエラーとなってしまうようでした。
私自身フォントにあまり詳しいわけではないので、以下想像になります。
各種Office製品や、その他エディタ等のフォントを指定する際、フォント名は日本語である必要がありません。
そもそもOfficeは日本だけで使用するものではないので、当たり前といえば当たり前かと思いますが・・・。
実際にExcelに限らず、Wordであってもフォントを選ぶ際に日本語を使った「MS ゴシック」等を必ずしも選ぶ必要はないということです。
「MS ゴシック」の場合、PC内部では「MS Gothic」としても認識されます。
今回の「游ゴシック」も「Yu Gothic」と日本語でないフォント名で指定すれば良いということでした。
とはいえ、なんでMicrosoft製品のデフォルトフォントは「游ゴシック」になってしまったんですかね・・・。
フォント自体はべつにダメとは言いませんが、「游」なんて特殊な漢字使わなけりゃいいのに・・・。