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

このQ&Aに関連する最新のQ&A

A 回答 (4件)

下記の方法ではダメですか?



最悪の場合はフリーの時計ソフトか、オリジナルで作成した時計などをEXEで用意しておいて、アプリ起動時に起動するようにしてみては?

SetWindowPosで時計を最前面固定にしておいて、下記の処理と同様にアプリ終了時に強制終了させるようにしたら、一応回避できます。
(最終手段)
    • good
    • 1
この回答へのお礼

いろいろ、考えていただき有難うございます。
参考にさせていただきます。

でも、先ほど上司に「そんなに実現が難しいならなしで。」っと言われました(T_T)

お礼日時:2001/12/14 16:17

サンプルです。



先ほどの発言に間違いがあります。テキストボックスを透過させようとしましたが、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
    • good
    • 0

うーむ、うーむ、うーむ、


そうですかー、、、

そこまでのカスタマイズを求めるのであれば、パワポを使用しないで、HTMLに出力してしまってはいかがですか?
JAVASやVBSを使用することで回避できそうな気がします。


どうしてもパワポにこだわりますか?

もしそうなら、一応反則技は存在しそうです。処理としては・・・
テキストボックスをAPIで作成し、透過形式にスタイルを変更して、テキストボックスの親ハンドルををパワポに設定します。
スライドのページが変わっても親ハンドルとなるパワポは、存在しつづけるので、テキストボックスは常に最前面に居続けます。
欠点としては環境に左右します。もし二つ以上のプレゼンが実行されているとき、どのプレゼンを親とするかがわかりません。

プレゼン中はハンドルが変わらないことは確認しましたが、実際に実現して検証を行わないと、正確なことは言えないので、自信は50%です。

この回答への補足

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

補足日時:2001/12/08 10:47
    • good
    • 0

パワポの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

この回答への補足

回答有難うございます。
たしかに、回答の方法で実現できますが、スライドの枚数が100枚ともなると・・・。
普通に動いてくれるんでしょうか・・・?

スライドがForm_LoadやForm_Unloadみたいなイベントがあがれば楽なんですけどね~。

補足日時:2001/12/07 13:04
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q男性ハリウッド俳優の人気ランキングを教えてください!

男性ハリウッド俳優の人気ランキングを教えてください!

できたら20位まで

Aベストアンサー

男優の人気ランキングと言っても、国や性別・年齢・調査方法などによって変って来ますので、一概には決められないのですが、ちょうど先日TV朝日のSmaStationで「大人が選んだハリウッド男優ベスト25」が放送されました。
それによると、
25位   ジョン・トラボルタ
24位   ロバート・デ・ニーロ
23位   マイケル・J・フォックス
22位   マット・デイモン
21位   アル・パチーノ
20位   ショーン・ペン
19位   アンソニー・ホプキンス
18位   ケヴィン・コスナー
17位   オーランド・ブルーム
16位   ロバート・レッドフォード
15位   エディ・マーフィ
14位   ブルース・ウィリス
13位   クリント・イーストウッド
12位   シルベスター・スタローン
11位   ヒュー・グラント
10位   ダスティン・ホフマン
 9位   キアヌ・リーブス
 8位   ウィル・スミス
 7位   トム・ハンクス
 6位   ブラッド・ピット
 5位   レオナルド・ディカプリオ
 4位   アーノルド・シュワルツェネッガー
 3位   トム・クルーズ
 2位   リチャード・ギア
 1位   ジョニー・デップ
このような順位になっていました。

男優の人気ランキングと言っても、国や性別・年齢・調査方法などによって変って来ますので、一概には決められないのですが、ちょうど先日TV朝日のSmaStationで「大人が選んだハリウッド男優ベスト25」が放送されました。
それによると、
25位   ジョン・トラボルタ
24位   ロバート・デ・ニーロ
23位   マイケル・J・フォックス
22位   マット・デイモン
21位   アル・パチーノ
20位   ショーン・ペン
19位   アンソニー・ホプキンス
18位   ケヴィン・コ...続きを読む

QVB:「実行時エラー53 実行ファイルが見つかりません」

お世話になっています。
VBよりOracle8.1.6に接続し、指定エクセルのデータを
OracleDBにアップロードするというアプリケーションを
社内で配布しています。

一部のPCから、
「実行時エラー53 実行ファイルが見つかりません」
エラーが発生するのです。私のPCからは正常に動作しますし
先週まで成功してたのに今週いきなりこのような現象がおこりまして
悩んでおります。

ちなみに同アプリケーションの別フォームは全PCで正常に
動いていまして、違いといえば、上記エラーが出る場面のみ唯一
Working.aviファイルを実行中呼び出してるところだと思うんですが。

あと先週まで動いてたのに今週から動かないのも気になります。
今週前半にOSのアップデートを行ったのですがそれが原因
だったりすることはあるでしょうか、、
よろしくおねがいします

Aベストアンサー

フルパスで指定しているWorking.aviが、そのパスに存在しなくなったことが原因であると考えられます。
例えば、OSのアップデートにより、ドライブの構成が変わったとか、ありませんか?
あるいは、Working.aviがネットワーク上に存在するとしたら、Working.aviが存在するファイルサーバーの権限等がリセットされ、Working.aviを開けなくなっているとかはありませんか?

エラーが発生しているPCで、エクスプローラー等で、そのファイル自体を探してみて下さい。
そうすることにより、原因が明らかになると思います。

Q現在の海外ブランドの人気ランキング10を教えてください。宜しくお願いします。

現在の海外ブランドの人気ランキング10を教えてください。
宜しくお願いします。

Aベストアンサー

ご質問者の意図とする人気ランキングは何でしょうか?
日本国内のインターネット検索アクセス数、各ブランドの日本国内売上、他にもいろいろな見方があると思います。どんなデータを探しているのでしょうか?

最初の回答者へ:
ブランドのランキングは、データによってはブランド側にとっても貴重なマーケット情報になりますよ。ブランドが全く分かっていない人が利用するだけではありません。

QVBのタイマーイベントについて

VBでタイマーイベントを利用してある処理を定期的に行なっている状態で
その他のイベント(スクロールバーはクリックされている時間が長いのでイベントが重なる可能性が高い)が発生すれば、どちらかが優先されるのでしょうか?
タイマーは、その他のイベントが発生しても時刻は刻まれているのでしょうか?
よろしくお願いします

Aベストアンサー

イベントが重なるといっても、
完全同時ということはありません。
少しでもはやい方にイベントが優先され、イベントは
キュー方式(ところてんみたいな感じ)でたまっていくので
順次実行されていきます。

タイマーの時刻はイベントに関係なく刻まれていきます。

Q【電子書籍人気ランキングについて】

【電子書籍人気ランキングについて】

現在、電子書籍を始めてみようかなーと思っています。
しかし、サイトがあり過ぎ、また口コミ情報も少なく、何が良いサイト(かつ安全なサイト)
なのか分かりません。

電子書籍サイトの人気ランキングや、口コミ情報などございましたら教えてください。

※ジャンルは小説やコミック何でも構いません。

よろしくお願い致します。

Aベストアンサー

確かに最近は、やたらめったらサイトが増えてよくわかりませんね。
で、ランキング情報では無いのですが..

"小説系の本" であれば、サイトの信頼性, 決済方法の安心感, 登録の必要な個人情報の少なさ などの観点から初めての方に向いているのは、ビットウェイブックスさんじゃないか、と私は思います。
 →クレジットカード決済でも良いのであれば、話は変わってきます。
印刷会社の2強のうちの1社の凸版印刷さんの関連会社の運営するサイトです。
少し操作性は悪いですが、品揃えも他の大手と比べても遜色ありません。
まあ、最近はリニューアルを行う可能性のあるサイトが多いので、いつまでこの通りであるかはわかりませんが..

あと、ここのブログ(参考URL部分に記載)に、初めての方向けのQAと購入手順が載ってます。
私のブログなんですけどね... (-_-;)
良かったら覗いて見てください。

参考URL:http://kaichi01.seesaa.net/article/167013212.html

Qマルチメディアタイマーコントロールの入手方法

マルチメディアタイマーコントロール
(MMTimer.ocs)の入手方法を教えて下さい。

又、マルチメディアタイマーはXPでも動作可能でしょうか?

Aベストアンサー

ってこれのことですか?
http://www1.harenet.ne.jp/cgi-bin/cgiwrap/unaap/chtml/chtml.cgi?key=mmtimer

動作環境はWindows95とかいてありますね。
XPで動くかは作者の方に確認してみてはいかがでしょうか。

というか、マルチメディアAPI使って自分で作ればいいと思いますけど。

Qパチンコの人気ランキングとは

パチンコの人気ランキングが見れるサイトについてお教え下さいませ。

Aベストアンサー

 こんにちは。またお会いしましたね。
(~_~) 御質問のタイトルで、私の端末でグーグルの検索した所、P-WORLDのほか3~4件程あったようです(時間かかるので 詳しく中身は見ていません)。三洋の大海SPシリーズ、エゥ"アンゲリオンシリーズ、花の慶次、冬のソナタ2 などになるのは目に見えていますが… 最近は、どこのお店も渋いから、一度ある機種でマイナス収支になると、どうしても その同じ機種で取り返してやる!となって、ほかの機種打つ余裕(金額の あるいは心の)が ないんですよね。では さようなら。

QVB タイマーコントロールをインデックスを使用し130個作成しました。

VB タイマーコントロールをインデックスを使用し130個作成しました。
タイマーイベントの表記はどのようにするのでしょうか。
Private Sub Timer(0)_Timer()  ~ End Sub とするとエラーになります。タイマーコントロールのインデックスの使い方が分かりません。よろしくお願いします。

Aベストアンサー

配列にしたから正しく動作しないのでしょうか?
それとも元々動作していないのでしょうか?

質問本文では「エラーになります。」とのことで
先の回答への補足では「処理がなされません」

微妙に表現が異なるのは、状況が進展したけど完成形に至っていないと言うことでしょうか?

先程の回答で配列に関する問題はクリアになったのでしょうか?

「処理がなされません」とは具体的にどの様な状況でしょうか?
イベントが発生しない?
イベントは発生するが、思うように結果が得られない?

タイマーコントロールを130個も使う事の是非は別問題として
現在の状況など詳しく正確に記載してもらえないと何が起きて、何が問題なのかわかりません。

単純にEnabled属性が・・・ってな事では無いのですよね?

Qアニメの年間の人気ランキングをしりたいです。

アニメの年間の人気ランキングをしりたいです。載っている雑誌かサイトなどの情報を教えてもらえないでしょうか?

Aベストアンサー

一口に「人気ランキング」といっても、いろんな趣旨がありますね・・・。
『年間の』という条件が付くと、子供や一般人を対象としたランキングはあまり見当たりません。
そこで、私はアニメファンの人たちによる投票ランキングを。

「月刊アニメージュ」では、毎年2月発売の“3月号”で前年のアニメの人気投票を募り、3ヶ月後の“6月号”で結果発表をしています。
結果判明が遅いのが難点ですが、規模としては最も大きいかと。

他に、ネット上ではこんな企画もあります。
http://www2.pure.cc/~mikimomo/home/omoituki/kanso_ritsu.html
左の「CONTENTS」欄のうち、「終」のリンクをご覧ください。
これは、作品を見た人の数にとらわれず、最後まで見た人だけで点数を付けてランキングにしようという試みです。
どうしてもメディア露出の数に左右されやすい「アニメージュ」よりも、隠れた名作といわれるアニメがしっかり高得点になっているのが特徴です。

Qラインコントロールにクリックイベント

ラインコントロールにイベントが発生しないことは分かっています。

なので、自作しないといけないのかなと思っていますが、良い方法が見つかりません。クリックイベントが発生するようなラインのユーザーコントロールの作り方を教えていただけませんか?

あるいは、フォームのクリックイベントで、そこがラインコントロール上か否かという判断をさせる方法でもいいです。

よろしくお願いします。

Aベストアンサー

縦線や横線のラインなら簡単ですが、斜めのラインは判定が難しいですね。
最も簡単な手法はラインに特別な色をつけて、フォームクリック時にその色を
取得すればどうでしょうか。
以下のコーディングでラインコントロールをクリックした時に、
その、色をゲットできるので、後はその色番号でクリックされたとみなせばよいでしょう。
色を変えたくないなら、タンジェント等の三角関数がいるような気がします。

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print Point(X, Y)
End Sub


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング