アプリケーションマクロから KeySQL マクロへの 変 換 手 順 について 目 次 アプリケーションマクロから KeySQL マクロへの 変 換 手 順 について...1 Excel VBA マクロを KeySQL 8 で 読 み 込 む...2 概 要...2 手 順...2 書 き 換 え 対 象 の 抽 出...3 関 数 の 書 き 換 え...3 KeySQL マクロファイルの 作 成...4 Excel VBA マクロから KeySQL マクロへの 関 数 書 き 換 え 対 応 表...6 DDE マクロを KeySQL 8 で 読 み 込 む... 9 概 要...9 手 順...9 書 き 換 え 対 象 の 抽 出...10 関 数 の 書 き 換 え...10 KeySQL マクロに 変 換 できない 関 数...11 KeySQL マクロファイルの 作 成... 11 OOoBasic マクロを KeySQL8 で 読 み 込 む...12 概 要...12 手 順...12 書 き 換 え 対 象 の 抽 出...13 関 数 の 書 き 換 え...13 KeySQL マクロファイルの 作 成...14 OOoBasic マクロから KeySQL マクロへの 関 数 書 き 換 え 対 応 表...14 1
Excel VBA マクロを KeySQL 8 で 読 み 込 む 概 要 Excel VBA マクロでは KeySQL の 機 能 を 呼 び 出 している 箇 所 のみ KeySQL マクロに 変 換 可 能 です KeySQL の 機 能 を 呼 び 出 している VBA マクロの 関 数 を 抜 き 出 し KeySQL マクロ 用 に 関 数 を 書 き 換 える 必 要 があります VBA マクロにおいて KeySQL の 機 能 を 呼 び 出 している 関 数 はすべて KeySQL で 始 まる 名 前 になります 手 順 以 下 のコードは 検 索 項 目 に SCOTT.EMP 表 の EMPNO のみを 指 定 し 作 成 した VBA です (コメントは 省 略 ) Public Sub KeySQLSampleMacro() Range("A1").Activate On Error GoTo CloseAndQuit Status = KeySQLConnect2("Oracle","Oracle11GR1","SCOTT","tiger","") If IsError(Status) Then GoTo CloseAndQuit On Error GoTo CloseAndQuit Status = KeySQLLocalAlias(False) If IsError(Status) Then GoTo CloseAndQuit Status = KeySQLClear() Status = KeySQLFrom("SCOTT.EMP") If IsError(Status) Then GoTo CloseAndQuit Status = KeySQLSelect(1,"SCOTT.EMP.EMPNO","","","",False,False) If IsError(Status) Then GoTo CloseAndQuit Status = KeySQLActiveSheet(" 一 覧 ") If IsError(Status) Then GoTo CloseAndQuit Status = KeySQLExecute("","",0,0) If IsError(Status) Then GoTo CloseAndQuit Status = KeySQLLogout() CloseAndQuit: End Sub 2
書 き 換 え 対 象 の 抽 出 上 記 の VBA マクロから KeySQL の 機 能 を 呼 び 出 す 関 数 を 抜 き 出 したものは 次 の 通 りで す KeySQLConnect2("Oracle","Oracle11GR1","SCOTT","tiger","") KeySQLLocalAlias(False) KeySQLClear() KeySQLFrom("SCOTT.EMP") KeySQLSelect(1,"SCOTT.EMP.EMPNO","","","",False,False) KeySQLActiveSheet(" 一 覧 ") KeySQLExecute("","",0,0) KeySQLLogout() 関 数 の 書 き 換 え 旧 Ver.の KeySQL で 出 力 された VBA をテキストエディタ 等 で 開 き マクロの 書 き 換 えを 行 います 書 き 換 えの 詳 細 は 後 述 する Excel VBA マクロから KeySQL マクロへの 関 数 書 き 換 え 対 応 表 を 参 照 してください 例 1 KeySQLConnect2("Oracle","Oracle11GR1","SCOTT","tiger","") KeySQL マクロではログインを 行 わないので 削 除 します 例 2 KeySQLLocalAlias(False) ローカル 別 名 は KeySQL 8 では 対 応 していないため 削 除 します 例 3 KeySQLClear() KeySQL マクロ 関 数 の Clear() へ 変 更 します 以 上 のように 対 応 する 関 数 の 書 き 換 えを 行 い KeySQL マクロ 用 に 行 末 にセミコロンを 追 加 したものが 次 のものになります Clear(); From("SCOTT.EMP"); Select(1,"SCOTT.EMP.EMPNO","","",,False,False); Execute("エクセル","","",0,0); 3
KeySQL マクロファイルの 作 成 書 き 換 えを 行 ったら KeySQL マクロファイル( SAMPLE.MAC 等 )として 保 存 します これでマクロファイルが 完 成 したので KeySQL 8 から 旧 マクロを 開 く ボタンで 作 成 した ファイルを 開 きます 旧 マクロを 開 く ボタンを 選 択 します 4
これまでの 過 程 で 作 成 した KeySQL マクロファイルを 選 択 し 開 きます 以 上 の 操 作 で KeySQL 8 の 画 面 上 に 旧 マクロの 内 容 が 再 現 されます 5
Excel VBA マクロから KeySQL マクロへの 関 数 書 き 換 え 対 応 表 Excel VBA マクロ KeySQL マクロ 変 換 例 引 数 の 変 更 KeySQLActiveSheet KeySQLBind KeySQLClear Clear KeySQLClear() Clear() KeySQLCondition Condition KeySQLCondition(w,"A.B = C.B AND A.D>=10")") Condition(w,"A.B = C.B AND A.D>=10")") KeySQLCrossCondition CrossCondition KeySQLCrossCondition(" ク ロ ス 集 計 2","A.D = 10") CrossCondition(" ク ロ ス 集 計 2","A.D = 10") KeySQLCrossSide CrossSide KeySQLCrossSide("クロス 集 計 1",1," 地 区 ",A) CrossSide("クロス 集 計 1",1," 地 区 ",A) KeySQLCrossTop CrossTop KeySQLCrossTop(" ク ロ ス 集 計 1"," 商 品 名 ",D) CrossTop("クロス 集 計 1"," 商 品 名 ",D) KeySQLCrossTopIndex CrossTopIndex KeySQLCrossTopIndex("クロス 集 計 1",1," 地 区 ",A) CrossTopIndex("クロス 集 計 1",1," 地 区 ",A) KeySQLCrossTotal CrossTotal KeySQLCrossTotal("クロス 集 計 1",1," 販 売 個 数 ",S," 合 計 ") CrossTotal("クロス 集 計 1",1," 販 売 個 数 ",S," 6
合 計 ") KeySQLDefMacro KeySQLExecfile Execfile KeySQLExecfile("sample.mac") Execfile("sample.mac") KeySQLFrom From KeySQLFrom("DEPT a,emp b") From("DEPT a,emp b") KeySQLInsert KeySQLLoad Load KeySQLLoad(BIND,"test",TRUE) Load(SETUPD,"test") 第 1 引 数 が SETUPD または FILE の 時 の みサポート 第 3 引 数 は 無 視 され 常 に FALSE として 扱 われる KeySQLLocalAlias KeySQLLogout KeySQLPut Put KeySQLPut(" 従 業 員. 部 門 番 号 = 部 門. 部 門 番 号 ") KeySQLCondition(w,"AND 従 業 員. 給 与 >=300000") Put(" 従 業 員. 部 門 番 号 = 部 門. 部 門 番 号 ") Condition(w,"AND 従 業 員. 給 与 > = 300000") KeySQLSave KeySQLSetupD SetupD KeySQLSetupD("Option.ShowCountAtSe lect = Off") SetupD("Option.ShowCountAtSelect = Off") KeySQLSelect Select KeySQLSelect (1,"MAX(DEPT.DEPTNO)","DEPTNO"," 7
KeySQLConnect MAX 値 ") Select (1,"MAX(DEPT.DEPTNO)","DEPTNO"," MAX 値 ") KeySQL マクロではサポートされません KeySQLDelete KeySQLExecute Execute KeySQLExecute("[Book.xls]Sheet1","A1", 0,0) KeySQLLogin Execute(" エ ク セ ル 2007","[Book.xls]Sheet1","A1",0,0) 第 1 引 数 にソフトウェア 名 を 指 定 します KeySQL マクロではサポートされません KeySQLUpdate KeySQLExecSql 8
DDE マクロを KeySQL 8 で 読 み 込 む 概 要 DDE マクロでは VBA のマクロコードのうち DDEExecute 関 数 で KeySQL の 関 数 を 呼 び 出 している 箇 所 のみ KeySQL マクロに 変 換 可 能 です DDEExecute 関 数 で 呼 び 出 されている KeySQL の 関 数 を 抜 き 出 し 2 個 連 続 するダブルク ォートを 1 個 に 書 き 換 える 必 要 があります 手 順 以 下 のコードは 検 索 項 目 に SCOTT.EMP 表 の EMPNO のみを 指 定 し 作 成 したマクロです (コメントは 省 略 ) ~~~~~~~~~~ 前 略 ~~~~~~~~~~ DDEExecute Cn, "[Connect(""ORACLE11GR1"",""scott"",""tiger"","""","""")]" Status = DDEAppReturnCode If Status <> 0 Then GoTo CloseAndQuit On Error GoTo CloseAndQuit DDEExecute Cn,"[LocalAlias(TRUE)]" Status = DDEAppReturnCode If Status <> 0 Then GoTo CloseAndQuit DDEExecute Cn,"[Clear()]" Status = DDEAppReturnCode If Status <> 0 Then GoTo CloseAndQuit DDEExecute Cn,"[From(""SCOTT.EMP"")]" Status = DDEAppReturnCode If Status <> 0 Then GoTo CloseAndQuit DDEExecute Cn,"[Select(1,""SCOTT.EMP.EMPNO"",,,,,)]" Status = DDEAppReturnCode If Status <> 0 Then GoTo CloseAndQuit DDEExecute Cn,"[ActiveSheet("" 一 覧 "")]" Status = DDEAppReturnCode If Status <> 0 Then GoTo CloseAndQuit DDEExecute Cn,"[Execute(""エクセル 2007"",""[Book1]Sheet1"",""A1"",0,0)]" ~~~~~~~~~~ 後 略 ~~~~~~~~~~ 9
書 き 換 え 対 象 の 抽 出 上 記 の DDE マクロから KeySQL の 機 能 を 呼 び 出 す 関 数 を 抜 き 出 したものは 次 の 通 りで す DDEExecute Cn,"[LocalAlias(TRUE)]" DDEExecute Cn,"[Clear()]" DDEExecute Cn,"[From(""SCOTT.EMP"")]" DDEExecute Cn,"[Select(1,""SCOTT.EMP.EMPNO"",,,,,)]" DDEExecute Cn,"[ActiveSheet("" 一 覧 "")]" DDEExecute Cn,"[Execute(""エクセル 2007"",""[Book1]Sheet1"",""A1"",0,0)]" DDEExecute Cn,"[Fetch(0)]" DDEExecute Cn,"[FetchEnd()]" 関 数 の 書 き 換 え DDE マクロでは DDEExecute Cn,"[ 関 数 ]" という 形 になっているので 関 数 のみ を 抜 き 出 します 例 1 DDEExecute Cn,"[LocalAlias(TRUE)]" ローカル 別 名 は KeySQL 8 では 対 応 していないため 削 除 します 例 2 DDEExecute Cn,"[Clear()]" 関 数 名 を 抜 き 出 し Clear() という 形 になります 例 3 DDEExecute Cn,"[From(""SCOTT.EMP"")]" 関 数 名 を 抜 き 出 し 連 続 し て い た ダ ブ ル ク ォ ー ト を 1 個 づ つ へ 変 更 し From("SCOTT.EMP") という 形 になります 10
KeySQL マクロに 変 換 できない 関 数 KeySQL マクロで 読 み 込 みが 対 応 していない 関 数 ( KeySQL マクロ 読 み 込 み 機 能 の 制 限 について を 参 照 )に 加 え 以 下 の 関 数 は DDE マクロ 専 用 のため KeySQL マクロに 変 換 し ても 読 み 込 むことができません Connect Login Fetch FetchEnd 例 のように 関 数 の 書 き 換 えを 行 い KeySQL マクロ 用 に 行 末 にセミコロンを 入 力 したもの が 以 下 のものになります Clear(); From("SCOTT.EMP"); Select(1,"SCOTT.EMP.EMPNO",,,,,); Execute("エクセル 2007","[Book1]Sheet1","A1",0,0); KeySQL マクロファイルの 作 成 これを KeySQL マクロファイルとして 保 存 し KeySQL 8 の KeySQL マクロの 読 み 込 み 機 能 を 使 用 することで 検 索 項 目 や 検 索 条 件 などを 読 み 込 む 事 ができます 11
OOoBasic マクロを KeySQL8 で 読 み 込 む 概 要 OOoBasic マクロでは KeySQL オブジェクト KeySQL. で KeySQL の 機 能 を 呼 び 出 して いる 箇 所 のみ KeySQL マクロに 変 換 可 能 です KeySQL オブジェクトのプロパティで 呼 び 出 されている 関 数 を 抜 き 出 し KeySQL マクロ 用 に 関 数 を 書 き 換 える 必 要 があります 手 順 以 下 のコードは 検 索 項 目 に SCOTT.EMP 表 の EMPNO のみを 指 定 し 作 成 したマクロです (コメントは 省 略 ) Public Sub KeySQLSampleMacro() ~~~~~~~~~~ 中 略 ~~~~~~~~~~ KeySQL.connect("Oracle(OCI 接 続 )","ORACLE11GR1","scott","tiger","") KeySQL.setLocalAlias(True) KeySQL.clear() KeySQL.setFrom("SCOTT.EMP") KeySQL.setSelect(1,"SCOTT.EMP.EMPNO","","",False,False) KeySQL.setKeySQLSheet(" 一 覧 ") KeySQL.execute("","",0,0) CloseAndQuit: KeySQL.logout() End Sub 12
書 き 換 え 対 象 の 抽 出 上 記 の OOoBasic マクロから KeySQL の 機 能 を 呼 び 出 す 関 数 を 抜 き 出 したものは 次 の 通 りです KeySQL.connect("Oracle(OCI 接 続 )","ORACLE11GR1","SCOTT","tiger","") KeySQL.setLocalAlias(True) KeySQL.clear() KeySQL.setFrom("SCOTT.EMP") KeySQL.setSelect(1,"SCOTT.EMP.EMPNO","","",False,False) KeySQL.setKeySQLSheet(" 一 覧 ") KeySQL.execute("","",0,0) KeySQL.logout() 関 数 の 書 き 換 え KeySQL 7 で 出 力 された OooBasic マクロをテキストエディタ 等 で 開 き KeySQL マクロ 用 に KeySQL. の 削 除 関 数 名 の 書 き 換 えを 行 います 関 数 名 書 き 換 えの 詳 細 は 後 述 す る OOoBasic マクロから KeySQL マクロへの 関 数 書 き 換 え 対 応 表 を 参 照 してください 例 1 KeySQL.connect("Oracle(OCI 接 続 )","ORACLE11GR1","SCOTT","tiger","") KeySQL マクロではログインを 行 わないので 削 除 します 例 2 KeySQL.clear() KeySQL マクロ 関 数 の Clear() へ 関 数 名 を 変 更 します 例 3 KeySQL.setFrom("SCOTT.EMP") KeySQL マクロ 関 数 の From()へ 関 数 名 を 変 更 します 以 上 のように 対 応 する 関 数 の 書 き 換 えを 行 い KeySQL マクロ 用 に 行 末 にセミコロンを 追 加 したものが 次 のものになります Clear(); From("SCOTT.EMP"); Select(1,"SCOTT.EMP.EMPNO","",,False,False); Execute("","","",0,0); 13
KeySQL マクロファイルの 作 成 書 き 換 えを 行 ったら KeySQL マクロファイルとして 保 存 し KeySQL 8 の KeySQL マク ロの 読 み 込 み 機 能 を 使 用 することで 検 索 項 目 や 検 索 条 件 などを 読 み 込 む 事 ができます OOoBasic マクロから KeySQL マクロへの 関 数 書 き 換 え 対 応 表 OOoBasic 用 マクロ KeySQL マクロ 変 換 例 関 数 名 引 数 の 変 更 の 有 無 setkeysqlsheet setbindvariable clear Clear clear() Clear() 関 数 名 を 変 更 / 引 数 変 更 なし setcondition Condition setcondition(w,"a.b = C.B AND A.D>=10")") Condition(w,"A.B = C.B AND A.D>=10")") 関 数 名 を 変 更 / 引 数 変 更 なし setcrosscondition CrossCondition setcrosscondition(" ク ロ ス 集 計 2","A.D = 10") CrossCondition("クロス 集 計 2","A.D = 10") 関 数 名 を 変 更 / 引 数 変 更 なし setreplacestring setfrom From setfrom("dept a,emp b") From("DEPT a,emp b") 関 数 名 を 変 更 / 14
insertrow loadfile Load loadfile(bind,"test",true) Load(SETUPD,"test") 関 数 名 を 変 更 / 第 1 引 数 が SETUPD または FILE の 時 のみ サポート 第 3 引 数 は 無 視 され 常 に FALSE として 扱 わ れます setlocalalias logout setparameter SetupD setparameter("option.showcountatselect = Off") SetupD("Option.ShowCountAtSelect = Off") 関 数 名 を 変 更 / addcrossside CrossSide addcrossside( クロス 集 計 1",1," 地 区 ",A) CrossSide( クロス 集 計 1",1," 地 区 ",A) 関 数 名 を 変 更 / addcrosstop CrossTopIndex addcrosstop("クロス 集 計 1"," 商 品 名 ",D) CrossTop("クロス 集 計 1"," 商 品 名 ",D) 関 数 名 を 変 更 / addcrosstotal CrossTotal addcrosstotal(" ク ロ ス 集 計 1",1," 販 売 個 数 ",S," 合 計 ") CrossTotal("クロス 集 計 1",1," 販 売 個 数 ",S," 合 計 ") 関 数 名 を 変 更 / 引 数 変 更 なし 15
deleterow executesql execute Execute execute("[book.xls]sheet1","a1",0,0) Execute(" エ ク セ ル 2007","[Book.xls]Sheet1","A1",0,0) 関 数 名 を 変 更 / 第 1 引 数 にソフトウェア 名 を 指 定 します savefile setselect Select setselect(1,"max(dept.deptno)","dept NO","MAX 値 ") Select(1,"MAX(DEPT.DEPTNO)","DEPTNO ","MAX 値 ") 関 数 名 を 変 更 / updaterow connect KeySQL マクロではサポートされません 16