ショコラ
CSVファイルを文字列フォーマットでエクセル読み込ませるには?
CSVファイルを CSV2XLS.hta にドラッグ&ドロップでキメマス。
もっさん先輩
こちらのリンクを右クリックしてファイルをダウンロードできます。
https://answorz.com/4345/CSV2XLS.hta
手順
- CSV2XLS.hta をダウンロードします。
https://answorz.com/4345/CSV2XLS.hta
- CSV2XLS.hta をダブルクリックします。
- CSV2XLS.reg をダブルクリックします。
これで準備完了です。
- 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>