• 締切済み

PowerPointで時計表示

やりたいことは、PowerPointのスライドショーでリアルタイムで変る時計を表示したいのですが。 PowerPointのVBでは、タイマーコントロールがないし、実行開始イベントが何を使えばいいのかわかりません。 どなたか、回答宜しくお願いします。

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

下記の方法ではダメですか? 最悪の場合はフリーの時計ソフトか、オリジナルで作成した時計などをEXEで用意しておいて、アプリ起動時に起動するようにしてみては? SetWindowPosで時計を最前面固定にしておいて、下記の処理と同様にアプリ終了時に強制終了させるようにしたら、一応回避できます。 (最終手段)

osaosa42
質問者

お礼

いろいろ、考えていただき有難うございます。 参考にさせていただきます。 でも、先ほど上司に「そんなに実現が難しいならなしで。」っと言われました(T_T)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

サンプルです。 先ほどの発言に間違いがあります。テキストボックスを透過させようとしましたが、WIN2000限定仕様のようです。 処理はMain関数で実行するだけです。 カッコ悪いですが、現在時間を表示します。 Option Explicit Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function IsWindow Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long Private Declare Function DestroyWindow Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String) As Long Private Const WM_SETTEXT = &HC Private Const WS_VISIBLE = &H10000000 Private Const WS_CHILD = &H40000000 Private Const WS_BORDER = &H800000 Private Const HWND_TOPMOST = (-1) Private Const SWP_NOSIZE = &H1& Private Const SWP_NOMOVE = &H2& Private Const SWP_SHOWWINDOW = &H40& Sub Main()   'とりあえず実行   ActivePresentation.SlideShowSettings.Run      '時計開始   Call DESP_CLOCK End Sub Sub DESP_CLOCK()   Dim OwnerWnd  As Long   Dim lngWinStyle As Long   Dim labelWnd  As Long   Dim strWork   As String   Dim strMem   As String      'プレゼンウィンドウのハンドルを得る   OwnerWnd = FindWindow("screenClass", vbNullString)      'ハンドルを得ることができないとき終了   If OwnerWnd = 0 Then     MsgBox "プレゼンウインドウが見つからない"     Exit Sub   End If      'ウィンドウスタイルを指定して、STATICオブジェクトを作成   lngWinStyle = WS_CHILD Or WS_VISIBLE   labelWnd = CreateWindowEx(0, "edit", Now, lngWinStyle, _            20, 20, 150, 20, _            GetDesktopWindow, 0, 0, ByVal CLng(0))      '作成したオブジェクトを最前面固定   Call SetWindowPos(labelWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW)      'スライドが閉じるまでループ   Do Until IsWindow(OwnerWnd) = 0     '時刻の更新     strWork = Now & vbNullChar     If strMem <> strWork Then       Call SetWindowText(labelWnd, strWork)       strMem = strWork     End If     DoEvents   Loop      ' ウィンドウを破棄   Call DestroyWindow(labelWnd)    End Sub

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

うーむ、うーむ、うーむ、 そうですかー、、、 そこまでのカスタマイズを求めるのであれば、パワポを使用しないで、HTMLに出力してしまってはいかがですか? JAVASやVBSを使用することで回避できそうな気がします。 どうしてもパワポにこだわりますか? もしそうなら、一応反則技は存在しそうです。処理としては・・・ テキストボックスをAPIで作成し、透過形式にスタイルを変更して、テキストボックスの親ハンドルををパワポに設定します。 スライドのページが変わっても親ハンドルとなるパワポは、存在しつづけるので、テキストボックスは常に最前面に居続けます。 欠点としては環境に左右します。もし二つ以上のプレゼンが実行されているとき、どのプレゼンを親とするかがわかりません。 プレゼン中はハンドルが変わらないことは確認しましたが、実際に実現して検証を行わないと、正確なことは言えないので、自信は50%です。

osaosa42
質問者

補足

どうしても、パワポなんですよ。 普通のVBとかなら、時計なんて簡単にできるんですけどね~。パワポのVBがこんなに使いづらいとは・・・。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

パワポのVBAって初経験です。 プレゼン自体にイベント通知が発生しないようですね。 ですので、開始/終了時にフラグを立てて、コードから実行する必要があるようです。 詳細としては、 各スライドに時計表示用のラベルを用意する必要があります。 Mainモジュールから実行して起動してください。 注意事項としては、ESCキーなどで終了するのではなく、各スライドに終了ボタンを用意するか、あるいは各スライドの時計表示されるラベルのクリックイベントなどで、終了フラグを立てる必要があります。参考コードではCloseCommand関数を呼ぶと、コードが抜ける仕組みになってます。 これ以外の方法は、調べたところわかりませんでした。 うーむ、パワポのVBA・・・扱いづらい・・・ Private flgEnd As Byte Sub Main()   '各ラベルを透化   Slide1.Label1.BackStyle = 0   Slide2.Label1.BackStyle = 0      'とりあえず実行   ActivePresentation.SlideShowSettings.Run      '時計開始   Call DESP_CLOCK End Sub Sub DESP_CLOCK()   flgEnd = 0   Do While flgEnd = 0     Slide1.Label1.Caption = Now     Slide2.Label1.Caption = Now     DoEvents   Loop End Sub Public Sub CloseCommand()   flgEnd = 1 End Sub

osaosa42
質問者

補足

回答有難うございます。 たしかに、回答の方法で実現できますが、スライドの枚数が100枚ともなると・・・。 普通に動いてくれるんでしょうか・・・? スライドがForm_LoadやForm_Unloadみたいなイベントがあがれば楽なんですけどね~。

関連するQ&A

  • PowerPointのスライドをセカンダリモニタに表示

    こんにちは。PowerPoint2003を使用しております。スライドショーをセカンダリモニターで実行することは可能でしょうか?可能な場合その設定などご存知の方が居ればお教え願いたく。 NotePCを使用しており、プロジェクタ等をセカンダリモニタとして接続して、PowerPointでスライドショーを実施することが多いです。 手元のNotePCでPowerPointのメイン画面を表示しながら、スライドショーをセカンダリモニタ(この場合プロジェクタ)に表示したいのですが、スライドショーを実行するとプライマリ(即ちNotePCの液晶)に表示されます。 モニタをプライマリ・セカンダリを入れ替える以外で、実現方法があれば、お教えいただくと助かります。

  • Powerpointのスライドショーの開始画面について

    officeXPのPowerpointで スライドショーの1番初めに 「スライドショーを開始しています」という画面が表示されずに いきなりスライドショーを開始させることは できないのでしょうか? どの設定を変えればよいのでしょうか? いろいろ触ってみるのですがさっぱりわかりません。 すごく困っています。 詳しい方教えてください。 よろしくおねがいします。

  • PowerPointでのモニタ表示について

    PowerPointでスライドショーを実行しようと思い、ノートパソコンとプロジェクタをつないでいます。 その際に、発表者側のノートパソコンにはノートなど操作画面がそのまま残るようにし、プロジェクタ側のモニタ画面にはスライドショーのみが表示されるようにしたいです。 ヘルプなどを色々見たのですがどうしてもうまくいきません。何かよい方法がありましたら、教えてください。

  • powerpoint自動スライドショー表示

    powerpointのファイルを開いたとき自動的にスライドショーが 開始されるような設定はどのようにすればよろしいでしょうか よろしくおねがいします

  • PowerPointでスライドショーをランダムに表示したい

    PowerPointで作ったスライドをランダムにスライドショーしたいのですが、可能でしょうか? なお、PowerPoint2003を使用していますが、可能ならばPowerPoint2000でも同様の操作をしたいです。 もしPowerPointのソフト上でそのようなことが不可能なのであれば、他の方法ででもスライドがランダムに表示できれば構いません。 どうぞ知恵をお貸し下さい。よろしくお願いします

  • PowerPointで表示される文字ががたがたになる

    Windows Vistaで、PowerPoint 2007を使っています。 TrueTypeフォントを使ってファイルを作っているのですが、スライドショー表示にした途端に表示される文字ががたがたになってしまいます。 スライドショーの状態で右クリックで出てくるメニューの文字もガタガタになっています。 全く同じファイルをMacでスライドショー表示させても、文字はガタガタになりません。 自分のWindowsの画面表示の設定か何かが悪いような気がしているのですが、どこに問題があるのか、教えていただけると助かります。

  • PowerPointについて質問です。

    Excelで作ったグラフを、PowerPointに乗せたいのですが。 この時に、PowerPointはスライドショーで永遠に実行しっぱなしで、元のExcelの数値を変更した場合に、スライドショーで流れているグラフも更新されるという感じにしたいのですが、可能なのでしょうか??? また、PowerPointの素材等でお勧めのWebがあれば教えてください。よろしくお願いいたします。

  • powerpoint 1枚の文章が1枚のスライド表示に収まらないんです

    powerpointを開くと、左下にスライド表示とか、スライドショーというアイコンがあります。 スライド表示のアイコンで、文章を表示すると、1枚の文章の上下が少しきれてしまいす。 スライドショーのアイコンで文章を表示した場合は問題なく、1枚の文章を1枚のスライドとしてみれます。 スライド表示でも1枚に収める方法御存知の方お願いします。

  • PowerPoint2010のブロードキャスト

    PowerPoint2010にて、ブロードキャストスライドショーが できません。 ブロードキャストの開始ボタンを押下すると、 「ブロードキャストの開始時にエラーが発生しました」 と表示されます。 もちろんインターネットはできていますし、ネットには 繋がっています。 PowerPoint Broadcast Serviceへの詳細情報のリンクを クリックすると http://office.microsoft.com/ja-jp/HA101792302.aspx?redir=0 利用できないページに遷移します。 このブロードキャストスライドショーサービスは 終了したのでしょうか。

  • PowerPoint 2007でのワイド画面表示

    PowerPoint 2007でプレゼンテーションのスライドを作ったのですがスライドショーで 表示させると「ワイド画面表示」になりません。  スライドショーの設定でパフォーマンスのハードウェアのアクセラレータを使用する」には チェックが入っています、また「スライドショーの解像度」は1920x1080(最遅、再現性は高)に なっています。 これ以外に「設定」する所はあるのでしょうか?。 教えて下さい、宜しくお願いします。

専門家に質問してみよう