Program Page: データベースとしてのExcelファイルの新規作成

カテゴリー名: [ADOによるデータベースの新規作成

2016/08/16

関連の解説ページへ戻る


《このページの目次》


    

1. JScript

△ create_xls.js

// Excelファイル(xls)をデータベース用として作成。ADOを利用
  // データの書き込みにはレコードセットを利用
var DbName, TableName, TypeStr;
var fso, DbPath, ShellObj, DriverStr;
var CN, ConnStr, RS, sql;

DbName = "test.xls";
TableName = "Sheet1";
TypeStr = "氏名 varchar,身長 float";

fso = WScript.CreateObject("Scripting.FileSystemObject");
DbPath = fso.GetAbsolutePathName(DbName);
if (fso.FileExists(DbPath))  fso.DeleteFile(DbPath);
fso = null;

ShellObj = WScript.CreateObject("Wscript.Shell");
if (ShellObj.Environment("Process").Item(
        "PROCESSOR_ARCHITECTURE") == "x86") {  // 32bit版の場合
    DriverStr = "Provider=Microsoft.Jet.OLEDB.4.0;";
} else {  // 64bit版の場合
    DriverStr = "Provider=Microsoft.ACE.OLEDB.12.0;";
}
ShellObj = null;
ConnStr = DriverStr + "Data Source=" + DbPath + ";" +
    "Extended Properties=\"Excel 8.0;HDR=Yes;\"";

CN = WScript.CreateObject("ADODB.Connection");
CN.Open(ConnStr);
sql = "create table " + TableName + " (" + TypeStr + ");";
CN.Execute(sql);  // テーブル(つまりワークシート)作成

RS = WScript.CreateObject("ADODB.Recordset");
sql = "select * from " + TableName + ";";
RS.Open(sql,CN,0,2,1);
RS.AddNew();
    RS.Fields("氏名").Value = "鈴木xls";
    RS.Fields("身長").Value = 172.3;
RS.Update();
RS.AddNew();
    RS.Fields(0).Value = "高橋xls";
    RS.Fields(1).Value = 168.5;
RS.Update();
RS.AddNew(["氏名", "身長"], ["田中xls", 183.6]);
RS.Update();
RS.Close();
CN.Close();
RS = null;
CN = null;

目次に戻る


    

△ create_xlsx.js

// Excelファイル(xlsx)をデータベース用として作成。ADOを利用
  // データの書き込みにはレコードセットを利用
var DbName, TableName, TypeStr;
var fso, DbPath;
var CN, ConnStr, RS, sql;

DbName = "test.xlsx";
TableName = "Sheet1";
TypeStr = "氏名 varchar,身長 float";

fso = WScript.CreateObject("Scripting.FileSystemObject");
DbPath = fso.GetAbsolutePathName(DbName);
if (fso.FileExists(DbPath))  fso.DeleteFile(DbPath);
fso = null;

ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;" +
    "Data Source=" + DbPath + ";" +
    "Extended Properties=\"Excel 12.0 XML;HDR=Yes;\"";
CN = WScript.CreateObject("ADODB.Connection");
CN.Open(ConnStr);
sql = "create table " + TableName + " (" + TypeStr + ");";
CN.Execute(sql);  // テーブル(つまりワークシート)作成

RS = WScript.CreateObject("ADODB.Recordset");
sql = "select * from " + TableName + ";";
RS.Open(sql,CN,0,2,1);
RS.AddNew();
    RS.Fields("氏名").Value = "鈴木xlsx";
    RS.Fields("身長").Value = 172.3;
RS.Update();
RS.AddNew();
    RS.Fields(0).Value = "高橋xlsx";
    RS.Fields(1).Value = 168.5;
RS.Update();
RS.AddNew(["氏名", "身長"], ["田中xlsx", 183.6]);
RS.Update();
RS.Close();
CN.Close();
RS = null;
CN = null;

目次に戻る


    

△ create_xls02.js

// Excelファイル(xls)をデータベース用として作成。ADOを利用
  // データの書き込みにはSQL命令のinsertを利用
var DbName, TableName, TypeStr;
var fso, DbPath, ShellObj, DriverStr;
var CN, ConnStr, sql;

DbName = "test.xls";
TableName = "Sheet1";
TypeStr = "氏名 varchar,身長 float";

fso = WScript.CreateObject("Scripting.FileSystemObject");
DbPath = fso.GetAbsolutePathName(DbName);
if (fso.FileExists(DbPath))  fso.DeleteFile(DbPath);
fso = null;

ShellObj = WScript.CreateObject("Wscript.Shell");
if (ShellObj.Environment("Process").Item(
        "PROCESSOR_ARCHITECTURE") == "x86") {  // 32bit版の場合
    DriverStr = "Provider=Microsoft.Jet.OLEDB.4.0;";
} else {  // 64bit版の場合
    DriverStr = "Provider=Microsoft.ACE.OLEDB.12.0;";
}
ShellObj = null;
ConnStr = DriverStr + "Data Source=" + DbPath + ";" +
    "Extended Properties=\"Excel 8.0;HDR=Yes;\"";

CN = WScript.CreateObject("ADODB.Connection");
CN.Open(ConnStr);
sql = "create table " + TableName + " (" + TypeStr + ");";
CN.Execute(sql);  // テーブル(つまりワークシート)作成

sql = "insert into Sheet1 (氏名,身長)  values('鈴木xls', 172.3);";
CN.Execute(sql);
sql = "insert into Sheet1 (氏名,身長)  values('高橋xls', 168.5);";
CN.Execute(sql);
sql = "insert into Sheet1 (氏名,身長)  values('田中xls', 183.6);";
CN.Execute(sql);

CN.Close;
CN = null;

目次に戻る


    

△ create_xlsx02.js

// Excelファイル(xlsx)をデータベース用として作成。ADOを利用
  // データの書き込みにはSQL命令のinsertを利用
var DbName, TableName, TypeStr;
var fso, DbPath;
var CN, ConnStr, sql;

DbName = "test.xlsx";
TableName = "Sheet1";
TypeStr = "氏名 varchar,身長 float";

fso = WScript.CreateObject("Scripting.FileSystemObject");
DbPath = fso.GetAbsolutePathName(DbName);
if (fso.FileExists(DbPath))  fso.DeleteFile(DbPath);
fso = null;

ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;" +
    "Data Source=" + DbPath + ";" +
    "Extended Properties=\"Excel 12.0 XML;HDR=Yes;\"";
CN = WScript.CreateObject("ADODB.Connection");
CN.Open(ConnStr);
sql = "create table " + TableName + " (" + TypeStr + ");";
CN.Execute(sql);  // テーブル(つまりワークシート)作成

sql = "insert into Sheet1 (氏名,身長)  values('鈴木xlsx', 172.3);";
CN.Execute(sql);
sql = "insert into Sheet1 (氏名,身長)  values('高橋xlsx', 168.5);";
CN.Execute(sql);
sql = "insert into Sheet1 (氏名,身長)  values('田中xlsx', 183.6);";
CN.Execute(sql);

CN.Close();
CN = null;

目次に戻る


    

2. VBScript

△ create_xls.vbs

' Excelファイル(xls)をデータベース用として作成。ADOを利用
    ' データの書き込みにはレコードセットを利用
Option Explicit
Dim DbName, TableName, TypeStr
Dim FSO, DbPath, ShellObj, DriverStr
Dim CN, ConnStr, RS, sql

DbName = "test.xls"
TableName = "Sheet1"
TypeStr = "氏名 varchar,身長 float"

Set FSO = CreateObject("Scripting.FileSystemObject")
DbPath = FSO.GetAbsolutePathName(DbName)
If (FSO.FileExists(DbPath) = True) Then FSO.DeleteFile(DbPath)
Set FSO = Nothing

Set ShellObj = CreateObject("Wscript.Shell")
If ShellObj.Environment("Process").Item( _
        "PROCESSOR_ARCHITECTURE") = "x86" Then  ' 32bit版の場合
    DriverStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
Else  ' 64bit版の場合
    DriverStr = "Provider=Microsoft.ACE.OLEDB.12.0;"
End If
Set ShellObj = Nothing
ConnStr = DriverStr & "Data Source=" & DbPath & ";" & _
    "Extended Properties=""Excel 8.0;HDR=Yes;"""

Set CN = CreateObject("ADODB.Connection")
CN.Open ConnStr
sql = "create table " & TableName & " (" & TypeStr & ");"
CN.Execute(sql)  ' テーブル(つまりワークシート)作成

Set RS = CreateObject("ADODB.Recordset")
sql = "select * from " & TableName & ";"
RS.Open sql,CN,0,2,1
RS.AddNew
    RS.Fields("氏名").Value = "鈴木xls"
    RS.Fields("身長").Value = 172.3
RS.Update
RS.AddNew
    RS.Fields(0).Value = "高橋xls"
    RS.Fields(1).Value = 168.5
RS.Update
RS.AddNew Array("氏名", "身長"), Array("田中xls", 183.6)
RS.Update
RS.Close
CN.Close
Set RS = Nothing
Set CN = Nothing

目次に戻る


    

△ create_xlsx.vbs

' Excelファイル(xlsx)をデータベース用として作成。ADOを利用
    ' データの書き込みにはレコードセットを利用
Option Explicit
Dim DbName, TableName, TypeStr
Dim FSO, DbPath
Dim CN, ConnStr, RS, sql

DbName = "test.xlsx"
TableName = "Sheet1"
TypeStr = "氏名 varchar,身長 float"

Set FSO = CreateObject("Scripting.FileSystemObject")
DbPath = FSO.GetAbsolutePathName(DbName)
If (FSO.FileExists(DbPath) = True) Then FSO.DeleteFile(DbPath)
Set FSO = Nothing

ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=" & DbPath & ";" & _
    "Extended Properties=""Excel 12.0 XML;HDR=Yes;"""
Set CN = CreateObject("ADODB.Connection")
CN.Open ConnStr
sql = "create table " & TableName & " (" & TypeStr & ");"
CN.Execute(sql)  ' テーブル(つまりワークシート)作成

Set RS = CreateObject("ADODB.Recordset")
sql = "select * from " & TableName & ";"
RS.Open sql,CN,0,2,1
RS.AddNew
    RS.Fields("氏名").Value = "鈴木xlsx"
    RS.Fields("身長").Value = 172.3
RS.Update
RS.AddNew
    RS.Fields(0).Value = "高橋xlsx"
    RS.Fields(1).Value = 168.5
RS.Update
RS.AddNew Array("氏名", "身長"), Array("田中xlsx", 183.6)
RS.Update
RS.Close
CN.Close
Set RS = Nothing
Set CN = Nothing

目次に戻る


    

△ create_xls02.vbs

' Excelファイル(xls)をデータベース用として作成。ADOを利用
    ' データの書き込みにはSQL命令のinsertを利用
Option Explicit
Dim DbName, TableName, TypeStr
Dim FSO, DbPath, ShellObj, DriverStr
Dim CN, ConnStr, sql

DbName = "test.xls"
TableName = "Sheet1"
TypeStr = "氏名 varchar,身長 float"

Set FSO = CreateObject("Scripting.FileSystemObject")
DbPath = FSO.GetAbsolutePathName(DbName)
If (FSO.FileExists(DbPath) = True) Then FSO.DeleteFile(DbPath)
Set FSO = Nothing

Set ShellObj = CreateObject("Wscript.Shell")
If ShellObj.Environment("Process").Item( _
        "PROCESSOR_ARCHITECTURE") = "x86" Then  ' 32bit版の場合
    DriverStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
Else  ' 64bit版の場合
    DriverStr = "Provider=Microsoft.ACE.OLEDB.12.0;"
End If
Set ShellObj = Nothing
ConnStr = DriverStr & "Data Source=" & DbPath & ";" & _
    "Extended Properties=""Excel 8.0;HDR=Yes;"""

Set CN = CreateObject("ADODB.Connection")
CN.Open ConnStr
sql = "create table " & TableName & " (" & TypeStr & ");"
CN.Execute(sql)  ' テーブル(つまりワークシート)作成

sql = "insert into Sheet1 (氏名,身長)  values('鈴木xls', 172.3);"
CN.Execute(sql)
sql = "insert into Sheet1 (氏名,身長)  values('高橋xls', 168.5);"
CN.Execute(sql)
sql = "insert into Sheet1 (氏名,身長)  values('田中xls', 183.6);"
CN.Execute(sql)

CN.Close
Set CN = Nothing

目次に戻る


    

△ create_xlsx02.vbs

' Excelファイル(xlsx)をデータベース用として作成。ADOを利用
    ' データの書き込みにはSQL命令のinsertを利用
Option Explicit
Dim DbName, TableName, TypeStr
Dim FSO, DbPath
Dim CN, ConnStr, sql

DbName = "test.xlsx"
TableName = "Sheet1"
TypeStr = "氏名 varchar,身長 float"

Set FSO = CreateObject("Scripting.FileSystemObject")
DbPath = FSO.GetAbsolutePathName(DbName)
If (FSO.FileExists(DbPath) = True) Then FSO.DeleteFile(DbPath)
Set FSO = Nothing

ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=" & DbPath & ";" & _
    "Extended Properties=""Excel 12.0 XML;HDR=Yes;"""
Set CN = CreateObject("ADODB.Connection")
CN.Open ConnStr
sql = "create table " & TableName & " (" & TypeStr & ");"
CN.Execute(sql)  ' テーブル(つまりワークシート)作成

sql = "insert into Sheet1 (氏名,身長)  values('鈴木xlsx', 172.3);"
CN.Execute(sql)
sql = "insert into Sheet1 (氏名,身長)  values('高橋xlsx', 168.5);"
CN.Execute(sql)
sql = "insert into Sheet1 (氏名,身長)  values('田中xlsx', 183.6);"
CN.Execute(sql)

CN.Close
Set CN = Nothing

〜 以上 〜