CSVファイルを文字列フォーマットでエクセル読み込ませるには?

ショコラ
ショコラ

CSVファイルを文字列フォーマットでエクセル読み込ませるには?

CSVファイルを CSV2XLS.hta にドラッグ&ドロップでキメマス。

もっさん先輩
もっさん先輩

こちらのリンクを右クリックしてファイルをダウンロードできます。

https://answorz.com/4345/CSV2XLS.hta

手順

  1. CSV2XLS.hta をダウンロードします。
https://answorz.com/4345/CSV2XLS.hta
  1. CSV2XLS.hta をダブルクリックします。
最初は hta にドラッグ&ドロップができないと思いますので、↑のようなメッセージが表示されます。
  1. CSV2XLS.reg をダブルクリックします。

これで準備完了です。

  1. CSVファイルを CSV2XLS.hta にドラッグ&ドロップします。

文字列フォーマットでエクセルが開きます。

以上

スクリプトの説明

<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9">
<meta charset="utf-8">
<hta:application id="hta"/>
<script>
// 文字コードが UTF-8 以外なら変更してください。
var Origin = 65001; // 65001:UTF-8
//var Origin = 932;   // 932:Shift_JIS
//var Origin = 1200;  // 1200:UTF-16
//var Origin = 69;    // 69:EUC-JP

// ドラッグ&ドロップされたファイルを取得します。
var file = hta.commandLine.split(' ')[1];

// hta にドラッグ&ドロップが可能か確認します。
var sh = new ActiveXObject('WScript.Shell');
key = 'HKEY_CLASSES_ROOT\\htafile\\ShellEx\\DropHandler\\';
val = sh.RegRead(key);
if ('{60254CA5-953B-11CF-8C96-00AA00B8708C}' != val) {
  alert('CSV2XLS.reg を実行してドラッグ&ドロップができるようにしてください。');
  var fs = new ActiveXObject('Scripting.FileSystemObject');
  var reg = fs.OpenTextFile('CSV2XLS.reg',2,true,0);
  reg.WriteLine('REGEDIT4');
  reg.WriteLine('[HKEY_CLASSES_ROOT\htafile\ShellEx\DropHandler]');
  reg.WriteLine('@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"');
  reg.Close();
}
else if ('' == file) {
  alert('ドラッグ&ドロップできます。');
}
else {
  // JavaScript の配列を VBScript の配列に変換します。
  function VBArray(arr) {
    var vbs = new ActiveXObject('ScriptControl');
    vbs.Language = 'VBScript';
    return vbs.Eval('Array('+ arr +')');
  }

  // 一時ファイルを作成します。拡張子によって Workbooks.OpenText の動作が違うみたいです。
  from = file;
  file = file + '.txt';
  to = file;
  var fs = new ActiveXObject('Scripting.FileSystemObject');
  fs.CopyFile(from,to);

  // field_info
  var field_info = [];
  for (var i=0; i<100; i++) {
    field_info.push('Array('+i+',2)'); // FieldInfo 2:xlTextFormat -> https://docs.microsoft.com/ja-jp/office/vba/api/excel.xlcolumndatatype
  }
  field_info = VBArray(field_info.join(','));

  // エクセルを起動します。
  var Excel = new ActiveXObject("Excel.Application");
  Excel.Visible = true;
  Excel.Workbooks.OpenText(
    file,      // FileName
    Origin,    // Origin 
    1,         // StartRow
    1,         // DataType 1:xlDelimited
    1,         // TextQualifier 1:xlTextQualifierDoubleQuote -> https://docs.microsoft.com/ja-jp/office/vba/api/excel.xltextqualifier
    false,     // ConsecutiveDelimiter
    true,      // Tab
    false,     // Semicolon
    true,      // Comma
    false,     // Space
    false,     // Other
    '',        // OtherChar
    field_info // FieldInfo
  );
}
close();
</script>
</html>
</html>
Scroll to Top