OOobbs3/44
質問
お世話になります。 下記URL Pageを参考に新規Tableと新規Formを含むBase Documentを作成するmacroを下記Code1を作成しました。 URL : http://hermione.s41.xrea.com/pukiwiki/index.php?OOoBasic/Base/Forms#y214d372 *********** [ Code1 ] *************** Sub oFormCreate On Error Goto oBad 'Create New Base Document Dim oDoc Dim Dummy() Dim oAns oDoc = StarDesktop.loadComponentFromURL("private:factory/sdatabase","_blank", 0, Dummy()) oDataSource = oDoc.DataSource ' ' set to use hsqldb oDataSource.URL = "sdbc:embedded:hsqldb" oTempName = ConvertToUrl("c:\temp\oBaseMacroTest.odb") if FileExists(oTempName) then oAns = msgbox("同名fileがあります。削除しますか?", 4,"既存fileの削除確認") if oAns = 6 then Kill(oTempName) Else MsgBox("中断します。") Exit Sub End if end if oDoc.StoreAsURL(oTempName,Dummy()) ' ' Load the Tools library If NOT GlobalScope.BasicLibraries.isLibraryLoaded("Tools") Then GlobalScope.BasicLibraries.LoadLibrary("Tools") End If ' ' Connect DB Dim oBaseContent Dim oDB Dim oCon oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext") oDB = oBaseContext.getByName(oTempName) oCon = oDB.getConnection("", "") ' 'Create New Table Dim oTables Dim oTableName Dim oTableDescriptor ' Access Tables in Connecting DB oTables = oCon.getTables() ' Define the Table Property oTableDescriptor = oTables.createDataDescriptor() oTableName = "MACROTESTTABLE" oTableDescriptor.Name = oTableName ' Define the Datas to table Columns( 最低一項目は設定が必要 ) oCols = oTableDescriptor.getColumns() oCol = oCols.createDataDescriptor() oCol.Name = "ID" oCol.Type = com.sun.star.sdbc.DataType.INTEGER oCol.IsNullable = com.sun.star.sdbc.ColumnValue.NO_NULLS oCol.IsAutoIncrement = True oCol.Precision = 10 oCol.Description = "Primary Key" oCols.appendByDescriptor(oCol) ' ' Create Table but not to be able to look the table, because it needs to store Base Document. oTables.appendByDescriptor(oTableDescriptor) ' 'Base Document Save oDB.DatabaseDocument.store() ' ' 新規Form作成 oFormDocuments = oDoc.getFormDocuments() oForm = oFormDocuments.createInstance("com.sun.star.sdb.DocumentDefinition") oFormDocuments.insertByName("oNewForm", oForm) ' ' DisConnect oCon.close oCon.dispose ' REM wait 1000 ' REM Dim oArgs(0) As new com.sun.star.beans.PropertyValue REM oArgs(0).Name = "Overwrite" REM oArgs(0).Value = true REM oDoc.storeToURL(oTempName,oArgs) ' Display msgbox "Success" Exit Sub oBad: Dim oErLine As Integer Dim oErNum As Integer Dim oErMsg As String oErLine = Erl oErNum = Err oErMsg = Error Msgbox("Error Line No. " & Chr$(9) & " : " & oErLine & Chr$(10) _ & "Error Number " & Chr$(9) & " : " & oErNum &Chr$(10 ) _ & "Error Message" & Chr$(9) & " : " & oErMsg , 0,"Error Message") End Sub ***************************************** macro自体は最終Message(Sccess)まで表示して完了しますが、そのまま作成したFormを編集しようとすると下図のError Messageが表示されます。 作成したFileを一旦終了(「変更を保存する」を選択)した後に、再度作成したFileを起動してからFormの編集を選択すると問題無く編集画面が表示されます。 そこで、上記Code1中の「REM」にてComment文にしている5行を追加して、macro中で保存させようとすると下図Errorとなります。 つきましては、上記Macro終了後に一旦Fileを終了させずにFormを編集出来るようにする方策をご教示頂けます様お願いします。 蛇足ながら、当方の最終目的を以下に記します。 目的 :Table, Formを含むBase Documentの作成 Step1 : 新規Tableを含む新規Base Documentの作成 => 済み Step2 : 新規Table、新規Form(Form項目無し)を含む新規Base Documentの作成 => 済み Step3 : 新規Table、新規Formに各種入力Form(Text Box, Radio Box, ListBox 等)を追加した新規Base Documentの作成 現在、Step3を行う為に作成したFormを編集Modeで開くところで躓いております。 宜しくご教示頂けます様お願いします。 回答
感想,コメント,メモ
|