Officeを2007から2013にアップグレードしたため、いくつかのアプリケーションを点検しています。そんな中で、TExcelApplicationを使ったサンプルを見つけ、Office2013で動くか試してみました。問題なく動いています。
元ネタは、Delphi-Fanの「Excelの書式設定を行う」を利用させていただきました。Excel絡みのアプリケーションを組むことがあるので、大変勉強になるコードです。ブログにコメントが残せないので、ここでお礼申し上げます。
SASプログラムとログを解析するユーティリティを開発するための備忘録です。This is a memo to develop utility that analyzes the SAS log.
data _null_;
format start end yymmdds10.;
start = '01mar1992'd;
end = '01mar1999'd;
/* BUG */
dif = yrdif(start,end,'ACT/ACT');
put _all_;
dif = intck('YEAR', start, end);
/* 今年の誕生日がまだ来ていない場合は、数え年から1を引きます */
if (month(end) < month(start)) then
dif = dif - 1;
else if (month(end) = month(start)) and day(end) < day(start) then
dif = dif - 1;
put _all_;
run;
path = "C:\Program Files\SASHome\x86\SASEnterpriseGuide\4.3\Sample\Data"
filename = "Candy_Sales_Summary"
WScript.Echo "Path specified: " & path
WScript.Echo "File name : " & filename
' Check registry for SAS Local Provider
Set WSHShell = CreateObject("WScript.Shell")
clsID = WSHShell.RegRead("HKEY_CLASSES_ROOT\sas.LocalProvider\CLSID\")
'clsID = WSHShell.RegRead("HKCRSAS.LocalProviderCLSID")
WScript.Echo "DIAGNOSTICS: SAS.LocalProvider CLSID is " & clsID
inProcServer = WSHShell.RegRead("HKCR\CLSID\" & clsID & "\InprocServer32\")
WScript.Echo "DIAGNOSTICS: Registered InprocServer32 DLL is " & inProcServer
' Constants for ADO calls
Const adOpenDynamic = 2
Const adLockOptimistic = 3
Const adCmdTableDirect = 512
' Instantiate the provider object
Set obConnection = CreateObject("ADODB.Connection")
Set obRecordset = CreateObject("ADODB.Recordset")
obConnection.Provider = "SAS.LocalProvider"
obConnection.Properties("Data Source") = path
obConnection.Open
obRecordset.Open filename, obConnection, adOpenDynamic, adLockOptimistic, adCmdTableDirect
'Report on Fields in this data set
WScript.Echo ""
WScript.Echo "Opened data " & filename & ", Record count: " & obRecordset.RecordCount
For Each Field In obRecordset.Fields
If Field.Type = 5 Then pType = "Numeric"
If Field.Type = 200 Then pType = "Character"
WScript.Echo Field.Name & " " & pType
Next
obRecordset.Close
obConnection.Close