REM ***** BASIC ***** Declare Function MyMessageBox Lib "test.dll" Alias "MyMessageBox" (str As String) Sub MessageBoxStrTest() Dim s1 as String Dim s2 as String s1="あ" s2=MyMessageBox(s1) msgbox(s2) End Sub REM *** BASIC END HEAR ***
上のコードでいちおうURLエンコードを行えました。汚いプログラムですが使いたい方がいたらどうぞ。 つづけざまに質問なのですが、VBAを使用していたときには現在開いているIEオブジェクトを以下のように捕らえていました。 WinExist = False Set ObjShell = CreateObject("Shell.Application") For Each ObjWindow In ObjShell.Windows If Not InStr(1, ObjWindow.document.Title, "サーバが見つかりません") Then WinExist = True Set IE = ObjWindow End If Next Set ObjShell = Nothing If WinExist = False Then Set IE = CreateObject("InternetExplorer.Application") End If これをそのままbasicで実行してみてもbasicにはFor Each ... in ... という構文がないようで うまく動作しませんでした。これに変わる方法で現在開いているIEオブジェクトを取得する方法は ありますでしょうか?
利用: Sub Main Xray ThisComponent End Sub 利用前に XrayTool ライブラリを読み込んでおく必要がある。 以下のコードをどこかのライブラリのモジュールに保存、ツール - カスタマイズから アプリケーションの開始イベントに設定するとよい。 Sub LoadingLibraries BasicLibraries.LoadLibrary("XrayTool") End Sub
利用: Sub Main oInspector = createUnoService("org.openoffice.InstanceInspector") oInspector.inspect(ThisComponent, "My Document") End Sub OOo Basic からいつも上記の様に記述するのが面倒であれば、Standard ライブラリなどに次のようなものを入れておく。 Sub Inspector( oTarget As Object ) oInspector = createUnoService("org.openoffice.InstanceInspector") oInspector.inspector( Target, "target" ) End Sub
Sub Hoyoyo( sString As String ) msgbox sString End Sub
Hoyoyo ドキュメント中の Standard ライブラリ、Module1 にある Hoyoyo subroutine を引数付きで実行する。
Sub invoke_Hoyoyo sURL = "vnd.sun.star.script:Standard.Module1.Hoyoyo?language=Basic&location=document" 'フレームを見つけてくる oFrames = StarDesktop.getFrames() Dim oFrame As Object For i = 0 To oFrames.getCount() -1 Step 1 If Left(oFrames.getByIndex(i).Title,6) = "Hoyoyo" Then oFrame = oFrames.getByIndex(i) End If Next If NOT IsNull( oFrame ) Then oDoc = oFrame.getController().getModel() oSP = oDoc.ScriptProvider oScript = oSP.getScript(sURL) If NOT IsNull( oScript ) Then oScript.invoke( Array( "Say Hoyoyo." ), Array(), Array() ) End If End If End Sub
Sub BlackWindow() oParent = StarDesktop.getActiveFrame().getContainerWindow() oToolkit = oParent.getToolkit() oDAcc = CreateUnoService( _ "com.sun.star.awt.DisplayAccess") If oDAcc.hasElements() Then oDisplay = oDAcc.getByIndex(0) aSize = oDisplay.ScreenArea nWindowTypeClass = com.sun.star.awt.WindowClass.TOP oAttr = com.sun.star.awt.WindowAttribute nAttr = oAttr.NODECORATION + oAttr.FULLSIZE oWindow = CreateWindow( oToolkit, oToolkit.getDesktopWindow(), _ nWindowTypeClass, "window", nAttr, _ 0, 0, aSize.Width, aSize.Height ) oWindow.setPosSize(0, 0, aSize.Width, aSize.Height, _ com.sun.star.awt.PosSize.POSSIZE ) oWindow.Background = 0 oWindow.setVisible(True) End If End Sub
236 :デフォルトの名無しさん:2008/06/25(水) 21:03:14
続き
Function CreateWindow( oToolkit As Object, oParent As Object, _ nWindowTypeClass As Long, sTypeName As String, nAttr As Long, _ nX As Long, nY As Long, nWidth As Long, nHeight As Long ) As Object aRect = CreateUnoStruct("com.sun.star.awt.Rectangle") With aRect .X = nX : .Y = nY .Width = nWidth : .Height = nHeight End With aWinDesc = CreateUnoStruct("com.sun.star.awt.WindowDescriptor") With aWinDesc .Type = nWindowTypeClass .WindowServiceName = sTypeName .ParentIndex = -1 .Bounds = aRect .Parent = oParent .WindowAttributes = nAttr End With CreateWindow = oToolkit.createWindow(aWinDesc) End Function
Declare Function ReReplace Lib "bregexp.dll" Alias "Replace" _ (szRegstr As String, szTarget As String) As String
Sub ExampleDeclare Dim sExp As String Dim sTarget As String Dim sStr As String sTarget = "12" sExp = "/\d/x/" sStr = ReReplace(sExp, sTarget) msgbox sStr 'FreeLibrary("bregexp.dll" ) End Sub
Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" _ (ByRef lpbuffer As String, nSize As Long) As Long
Public Function ComputerName() As String Dim sBuffer As String Dim lSize As Long Dim sNome As String
sBuffer = Space$(260) lSize = Len(sBuffer) Call GetComputerName(sBuffer, lSize) If lSize > 0 Then sNome = Left$(sBuffer, lSize) lSize = InStr(sNome, Chr$(0)) If lSize Then sNome = Left$(sNome, lSize - 1) End If Else sNome= "" End If 'ComputerName = sNome MsgBox sNome End Function
Sub clipboard_2 oClip = CreateUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard") oTransfer = oClip.getContents() aDataFlavors = oTransfer.getTransferDataFlavors() bType = False For i = 0 To UBound(aDataFlavors) Step 1 aDataFlavor = aDataFlavors(i) If aDataFlavor.MimeType = "text/plain;charset=utf-16" Then bType = True Exit For End If Next
If bType Then ' convert utf-16 to UNO string oConverter = CreateUnoService("com.sun.star.script.Converter") sData = oConverter.convertToSimpleType( _ oTransfer.getTransferData(aDataFlavor), _ com.sun.star.uno.TypeClass.STRING) End If
For i = 0 to oBookmarks.getCount() - 1 step 1 oMark = oBookmarks.getByIndex(i) oAnchor = oMark.getAnchor() If Len(oAnchor.getString()) > 1 Then sName = oMark.getName() oStartRange = oAnchor.getStart()
oNewMark = oDoc.createInstance("com.sun.star.text.Bookmark") oNewMark.setName(sName) oText.removeTextContent(oMark) oText.insertTextContent(oStartRange, oNewMark, False) End If Next End Sub
416 :デフォルトの名無しさん:2010/01/16(土) 23:07:07
ユーザー定義のツールバー探すもの Sub find_toolbar sUIName = "Test1"
oFound = nothing oLM = ThisComponent.getCurrentController().getFrame().LayoutManager oElements = oLM.getElements() For i = 0 To UBound(oElements) step 1 oItem = oElements(i) If Mid(oItem.ResourceURL, 1, 40) = "private:resource/toolbar/custom_toolbar_" Then If oItem.getSettings(False).UIName = sUIName Then oFound = oItem Exit For End If End If Next If NOT IsNull(oFound) Then ' do something msgbox "found" End If End Sub
Function ConcatRange(oData) As String Dim sRet As String For i = 1 to UBound(oData, 1) step 1 For j = 1 to UBound(oData, 2) step 1 sRet = sRet & CStr(oData(i, j)) Next next ConcatRange = sRet end Function
If oFileAccess.exists(sUrl) Then vData = oFileAccess.openFileRead(sUrl) oInputStream.setInputStream(vData) While NOT oInputStream.isEOF() sLine = oInputStream.readLine() sDataLine = sDataLine & sLine & Chr(10) WEnd oInputStream.closeInput() End if
Dim oPrintOptions(0) as new com.sun.star.beans.PropertyValue oPrintOptions(0).Name = "A4" oPrintOptions(0).value = com.sun.star.view.PaperOrientation.LANDSCAPE ThisComponent.setPrinter( oPrintOptions )