• 締切済み

OpenOffice Impress マクロ(OOo Basic)で任

OpenOffice Impress マクロ(OOo Basic)で任意のページを表示する方法を教えてください。 PowerPointからの移行で「 SlideShowWindows(Index:=1).View.GotoSlide」に変わるものを 探しています。 OpenOfficeはまだ数日しか触っていませんが苦戦しています。 今の所ネットで色々探しましたが以下の内容が近いと思いましたが思ったとおりの動きを してくれませんでした。 どなたかご教授お願いします。 サンプル1 Dim Doc As Object Dim Pages As Object Dim Page As Object Doc = ThisComponent Pages = Doc.getDrawPages Page = Pages(2) サンプル2 Dim Doc As Object Dim Page As Object Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(1)

みんなの回答

回答No.1

こんばんわ。 当方はPoewrPointのマクロを殆ど使った事が無いので 「 SlideShowWindows(Index:=1).View.GotoSlide」 の具体的な動作が分かりませんので、質問内容を以下の様に推測した回答を記します。 [ 推測 ] 単純にSlideのpage1にAccessする。 [ 回答 ] Slide Page2にAccessする場合。  Sub main   Dim oDoc As Object   Dim oPage    oDoc = ThisComponent    oPage = oDoc.getDrawPages().getByIndex(1)  ' <= Page 1 1の場合は getByIndex(0)です。 End Sub 蛇足として以下を記します。 [ 参考 ] OpenOffice.org Basicではありませんが下記URLのJavaScript Macro Free Softwareでいこう!! 「 OpenOffice.orgを使おう編 」  URL : http://openoffice3.web.fc2.com/ 「4.Macroの杜」=>「・JavaScript編」=>「【 Impress(Presentation) 】」=>「Annimation(SlideShow)」=>「[ Bookmark ]」=>「IAB-1)[Impress]要素にBookmarkを設定("page three"に移動)」 の様に、SlideShow中に任意の図形をClickする事でPage移動するMacro作成についての質問ならば、図形を作成する段階からの説明になるので、複雑になります。 因みに、上記URLのJavaScript CodeをBrowserで表示させても実行しませんのでご注意を。 実行させるならば、Impress画面から 「ツール」=>「マクロの管理」=>「JavaScript」=>「作成」 でIDEを表示させると、Writer用の「Hello World」Macroが記されているので、それらを全て削除して、上記Codeを記して、実行させれば 1)Slideを2page追加 2)slide1に四角要素を作成 3)四角要素をClickするとSlide page3に移動 するSlideが作成されます。 SlideShowを実行中に任意の四角形をクリックするとSlide Page3に移動します。

nanchan2010
質問者

お礼

ご回答ありがとうございます。 私の説明が悪かったと思うのですが、参考に記載している「SlideShow中に任意の図形をClickする事で Page移動するMacro作成」が本来わたしがやりたかったことになります。 詳しい説明をさせていただきますと、元々Powerpoinntで任意の画像をクリックしてページ移動をさせて表示 すると言うことをSlideShowWindows(Index:=1).View.GotoSlideを使ってやっていました。 ご回答頂きました 「oDoc = ThisComponent  oPage = oDoc.getDrawPages().getByIndex(1)  ' <= Page 1 1の場合は getByIndex(0)です。」 でも出来るかと思いましたが、やはりページの移動はうまく実現できていない状況です。 「画像をクリックするとマクロを起動」と言うことは実現できていますので、実際にページの移動をして表示させることは「oPage = oDoc.getDrawPages().getByIndex(1)」では難しいのでしょうか? もう少し。私のQAにお付き合いいただけたられしいです。 現状のマクロ(抜粋です) 画像の右クリックでオブジェクトの動作設定(マクロの実行) マクロ:vnd.sun.star.script:Standard.Module1.action000?language=Basic&location=document Sub action000() Call Slide_page(2) End Sub Function Slide_page(iToSlide) Dim oDoc As Object Dim oPage oDoc = ThisComponent oPage = oDoc.getDrawPages().getByIndex(iToSlide) End Function

関連するQ&A

  • vbから既存のOOoを立上るとマクロが動きません

    VB.Net初心者です。 vbから既存のOpenOffice.Orgを立ち上げるvbをつくりました。 Private Sub OOoButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OOoButton.Click Call ConnectOSM() Dim oCalcDoc As Object Dim MyURL As String = ConvertToUrl("\\WS55\OOo\注文書印刷VB用.ods") ' odsはカルク の拡張子 oCalcDoc = oDesktop.loadComponentFromURL(MyURL, "_blank", 0, dummyArray) end sub これの色々な関連のモジュールは長いので書きませんが 関連がありそうなモジュールは例えば Public OSM As Object 'オープンオフィスサービスマネージャ Public oDesktop As Object 'オープンオフィスデスクトップ Public oIntrospection As Object Public oDispatchHelper As Object Public Sub ConnectOSM() If IsOSMConnected() Then Exit Sub Try OSM = CreateObject("com.sun.star.ServiceManager") Catch OSM = Nothing End Try If isOOoNull(OSM) Then ' ここでエラー処理をする Else ' 各オブジェクト作成 oDesktop = CreateUnoService("com.sun.star.frame.Desktop") oIntrospection = CreateUnoService("com.sun.star.beans.Introspection") oDispatchHelper = CreateUnoService("com.sun.star.frame.DispatchHelper") End If End Sub とかです。 \\WS55\OOo\注文書印刷VB用.odsファイルはマクロ(OOo.Basic)が書かれています。 このファイルを直接クリックして立ち上げるとマクロは動きます。 VB.Netから立ち上げるとファイルは立ち上がるのですが、マクロが全く動かなくなります。 VBの問題かOOoの設定なのか良く判りません。 どなたかご存知の方教えてください。

  • ISBNから書名等を照会するOOoマクロ

    ISBNから書名等を照会するOOoマクロ 手持ちの本を OpenOffice.org Calc で管理しようと思っています。 そこで、ISBNから書名等の情報を(Amazon等に)照会したいと思い、そのようなマクロを探しています。公開されているものをご存知の方がいらっしゃいましたら教えて頂きたいです。 ブックになっていてもソースコードのみでも結構です。 併せて、自由に使えるOOoのマクロ等が集まっているサイトがあればそれも知りたいです。 練習用のサンプルというより、実用的なものが欲しいです。

  • OpenOffice.org3のマクロについて教えて下さい。

    お世話になります。 現在、OpenOffice.org3にてマクロ(OpenOffice Basic)を使ってWebサイトより株価取得のプログラムを作成しております。 同じ機能を持ったVBAにて実行する処理時間に比べてOpenOfficeでは非常に長い処理時間を要しています。 そこで、下記VBAマクロに相当するマクロの処理状況を表示させる方法をご存知の方がいらっしゃれば、ご教示頂けます様お願いします。 【VBA】 Dim blnSaveStatus As Boolean Dim strBarNow As String Dim strBarWk As String Dim int進捗率 As Integer Dim intマス数 As Integer Dim i As Integer blnSaveStatus = Application.DisplayStatusBar Application.DisplayStatusBar = True strBarNow = "現在 0%:□□□□□□□□□□" Application.StatusBar = strBarNow For i = 1 To ループ回数 ~~ ループ内の処理 ~~ : : int進捗率 = Int(i * 100 / ループ回数) ' 進捗率(%) intマス数 = Int(i * 10 / ループ回数) ' 10個マスだから10%単位 strBarWk = "現在 " & int進捗率 & "%:" & _ String(intマス数,"■") & String(10 - intマス数,"□") If (strBarWk <> strBarNow) Then Application.StatusBar = strBarWk ' 変化がある時だけバー更新 strBarNow = strBarwk End If Next i Application.StatusBar = False ' ステータスバーの制御をExcelに戻す Application.DisplayStatusBar = blnSaveStatus

  • OpenOffice,Basic,Mid()関数にて「無効なプロシージ

    OpenOffice,Basic,Mid()関数にて「無効なプロシージャの呼び出し」のエラー? OpenOffice Basicの初心者です. 「指定ユーザ数の、指定文字数のランダム文字列(a-z,A-Z,0-9)を生成するプログラム」 を作成したのですが, 以下のスクリプトを実行すると,下から6行目にて 「アクションは支援されません。無効なプロシージャーの呼び出し。」 というエラーが,出力されます. 出力されるタイミングは定まっておらず, プログラムが正常に動くときもあれば, 実行初期段階でエラーが出るときもあれば, 実行途中でエラーが出るときもあります. 色々と自分で原因究明してみましたが,原因が分かりません. (どうも Mid()関数 のところでひっかかっているようなのですが・・・.) どなたか、ご教授頂けませんでしょうか? (※添付画像は,出力されるエラー画面です.) ----- 自作スクリプト ここから ----- Sub Main dim doc as object dim sheet as object dim cell as object dim i, j as integer ' for文制御用 dim m, n as integer ' m:何人分か, n:何文字分か dim rand, maxRand as integer dim pw as string '文字列格納用変数 ' 初期化 rand = 0 maxRand = 63 ' 63未満の乱数生成する m= 20 ' 何人分の文字列か n = 15 ' 何文字分の文字列か doc = thiscomponent sheet = doc.sheets (0) smallString = "abcdefghijklmnopqrstuvwxyz" largeString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" numberString = "0123456789" rootString = smallString + largeString + numberString cell = sheet.getcellbyposition(0,0) cell.string = "生成した文字列" for i = 1 to m    pw = ""    for j = 1 to n       rand = int(maxRand * Rnd()) ' 乱数の生成       pw = pw + Mid(rootString, rand, 1)    next    cell = sheet.getCellByPosition(0,i)    cell.string = pw next End Sub ----- 自作スクリプト ここまで -----

  • OpenOffice表計算のマクロ(Basic)で選択中の結合セルからサイズを取得する方法について教えてください

    事情によりOpenOfficeの表計算ソフト上で簡単なマクロを作らなければならなくなったのですが、私は満足なプログラミングの知識をもっていず、また身近に頼れる詳しい人もいずに困り果ててしまいました。 マクロの内容は選択中の結合されたセルのサイズ(幅と高さ)にあわせて、はみ出さない範囲で拡大した画像を挿入するというものです。 ネットで検索するなどして調べたOOoBasicマクロの情報を元につぎはぎして、理解できないなりになんとか選択範囲のサイズを取得してあわせて拡大/縮小する所まではいきました。しかし、結合されたセルを選択している場合には、結合されたセルの中の一番左上の単一セルのサイズを取得してしまい、結合されたセル全体のサイズがどうしても取得できないという問題が残ってしまいました。 詳しく書くと、 Dim oSelection As Object oSelection = ThisComponent.CurrentSelection Dim w_len As Long Dim h_len As Long w_len = oSelection.size.Width h_len = oSelection.size.Height としたいうようになっていて、A1からC3まで結合されたセルを選択してマクロを実行するとA1の単一セルのサイズがw_lenとh_lenに入ってしまいます。 MicrosfOfficeに比べてOOoは情報が少なく、またあったとしても分かっている人向けに書いてあることが多く、関係がありそうなものを探しては闇雲にテストしてエラーを返され続けることに疲れました。 なにか良い方法があれば教えてください。よろしくお願いいたします。

  • OpenOffice.org Basicについて

     OOo.rcg Basicでsheet1のセルA2に入力されている文字列を指定されたバイト(桁)数にしたいんですが(今回は5バイトに指定し、桁数が足りない時はスペースで埋めます。)、メッセージボックスでは欲しい文字列が返ってくるのに、最後のセルへの代入ができません。  この説明文では理解できないかもしれませんが、おかしい所が分かる方教えていただけませんでしょうか? Function tkorigin(strVal As String, siteiketa As Integer) As String Dim moto As string Dim keta As long Dim i keta = len(strVal) moto = strVal if keta <> siteiketa then if keta < siteiketa then for i = 1 to siteiketa - keta moto = moto & " " next else moto = left(strval,siteiketa) end if end if ' msgbox "[" & moto & "]" tkorigin = moto End Function '--------------------------------------------------------------- Sub tameshi Dim strin As String Dim strout As String strin = Thiscomponent.Sheets(0).getCellByPosition(0,1).String strout = tkorigin(strin, 5) strin = strout ' msgbox "[" & strin & "]" End Sub

  • AccessVBAからWordのマクロを実行するには

    [環境]Access2000,Word2000 AccessVBAでWordのオブジェクトをつくりファイルを開くところまでは たどり着いたのですが、開いたWordファイルにあるマクロを実行させる ことが出来ずに困っています。 WordオブジェクトのApplicationとDocumentsオブジェクトの関係も把握 しきれていないため、おかしなソースになっているかも知れません。 よろしくお願いします。 sub DoMacro() Dim oWrd as Word.Application Dim oDoc as Word.Document Set oWrd = New Word.Application With oWrd Set oDoc = oWrd.Documents.Open("c:\test.doc") .Visible = True .Application.Run ("Macro1") oDoc.SaveAs "c:\newTest.doc" .Quit End With End Sub

  • マクロがあるファイルの読み出し時にマクロの有効を聞いてこないようにする。

    以下のようにエクセルのブックのシート名をゲットしようとしたのですが、エクセルにマクロを入れてあるため、「マクロの有効、無効」を聞いてきます。 聞いてこないようにするため xlApp.DisplayAlerts = False を入れたのですが、ダメでした。なにか良い方法はあるのでしょうか? 宜しくお願いいたします。 Dim FileNam As String Dim filebasho As String Dim wbsinario As Object Dim shtsinario As Object Dim ExcelWasNotRunning As Boolean If Err.Number <> 0 Then ExcelWasNotRunning = True Err.Clear ' xlApp.DisplayAlerts = False Set shtsinario = GetObject(filebasho & "\" & FileNam) Set wbsinario = shtsinario.Application.Workbooks(FileNam)

  • スライド内のオブジェクトを消すマクロ

    PowerPointのVBAマクロで、スライド中にspaceという文字列のみのテキストボックス以外のオブジェクトを消すマクロを以下のように作成したのですが、このマクロを実行しても、いくつかのオブジェクトが残ってしまいます。 Sub foo()  Dim f As Boolean  Dim sl As Slide  Dim sh As Shape   For Each sl In ActivePresentation.Slides    For Each sh In sl.Shapes     If sh.HasTextFrame Then         If sh.TextFrame.TextRange.Text <> "space" Then             sh.Delete         End If     End If    Next   Next End Sub コレクションをFor eachで回しているので、漏れはないはずなのですが、どなたか原因・対策をご教示いただけないでしょうか?

  • javaに書き換えたいのですが・・・

    Sub Main Dim oDoc As Object Dim oPre As Object oDoc = ThisComponent oPre = oDoc.getPresentation() oPre.start() wait 10000 oPre.end() End Sub 上のVBで書かれたプログラムをJavaに書き換えたいのですがわからないので教えてください.

専門家に質問してみよう