Skip to content

Instantly share code, notes, and snippets.

@taka2
Created October 4, 2011 01:07
Show Gist options
  • Select an option

  • Save taka2/1260685 to your computer and use it in GitHub Desktop.

Select an option

Save taka2/1260685 to your computer and use it in GitHub Desktop.
2次元のJScript配列を、2次元のSafeArrayに変換するサンプル(JScript only)
<?xml version="1.0" encoding="Shift_JIS" ?>
<package>
<job>
<script language="JScript"><![CDATA[
function convertToSafeArray2d(jsArray2d) {
try {
// Excelを起動する
var excelObj = new ActiveXObject("Excel.Application");
var workbook = excelObj.workbooks.Add();
var sheets = workbook.Sheets;
var enumSheet = new Enumerator(sheets);
// 1シート目を取得
var sheet = enumSheet.item();
// 各セルに値を設定
var i,j;
for(i=0; i<jsArray2d.length; i++) {
for(j=0; j<jsArray2d[i].length; j++) {
var value = jsArray2d[i][j];
sheet.Cells(i+1, j+1).Value = value;
}
}
// SafeArrayを返す
return sheet.Cells(1, 1).CurrentRegion.Value;
} finally {
// Excelを終了する
workbook.Close(false);
excelObj.Quit();
}
}
// 2次元のJScript配列
var arr2d = [[1,2,8],[4,7,6]];
// SafeArrayに変換
var safeArray2d = convertToSafeArray2d(arr2d);
printVBArray(new VBArray(safeArray2d));
// デバッグ用:VBArrayを表示
function printVBArray(vbArray) {
for(var i=1; i<=vbArray.ubound(1); i++) {
for(var j=1; j<=vbArray.ubound(2); j++) {
WScript.Echo("vbArray[" + i + "," + j + "] = " + vbArray.getItem(i, j));
}
}
}
]]></script>
</job>
</package>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment