ExcelとPowerPointをVBAで連携させる方法

このQ&Aのポイント
  • ExcelとPowerPointをVBAを使って連携させる方法についてご教授ください。
  • VBAを使用してExcelのデータベース表をPowerPointのテキストボックスにコピーして印刷する方法について、ご教授ください。
  • PowerPointのVBAでマクロの記録を使わずにオブジェクト名を知る方法についても教えてください。
回答を見る
  • ベストアンサー

ExcelとPowerPointをVBAで連携させる方法

おけましておめでとうございます。 本年もよろしくお願いします。 で、本題ですが、 (Win95でExcel2000とPowerPoint2000を使用) EXCELのデータベースの表を順々にPowerPointのテキストボックスへ コピーして印刷するためにVBAを作成したいと思ってます。 (印刷形式がPowerPointのため) ここには作成できるんですが、両者のVBAをどのように 連携させるかわかりません。 よろしくご教授ください。 また、PowerPointのVBAでマクロの記録を使わず、オブジェクト名 (("Text Box 1")とか)を知る方法もあわせてよろしくご教授ください。

  • awada
  • お礼率41% (14/34)

質問者が選んだベストアンサー

  • ベストアンサー
  • nta
  • ベストアンサー率78% (1525/1942)
回答No.4

>オブジェクト名はVBAを使わずにパワーポイント上だけでは確認しようが無いと言うことでしょうか。 絶対できないとまでは断言できる自信はないのですが、少なくともその方法は知りません。 オブジェクト名はVBAを使えば変更することはできます。 Application.ActiveWindow.Selection.SlideRange.Shapes.Item(1).Name = "New Name 1" だだ、この設定した名称が勝手に変更されることはないのかどうか自信がありません。少なくとも自動的に生成した「オブジェクト名」は勝手に変更されてしまいます。

awada
質問者

お礼

どうもありがとうございました。 大変参考になりました。

その他の回答 (3)

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.3

オブジェクト名を具体的に取得するには For i = 1 To Application.ActiveWindow.Selection.SlideRange.Shapes.Count name1 = Application.ActiveWindow.Selection.SlideRange.Shapes.Item(i).Name Next i とすればどこかにありますが、問題はItemの何番目が該当するのかということです。この番号は編集や保存によって変化しますので、Textプロパティ(書かれているべき文字列)などで判別する必要があります。

awada
質問者

補足

そうすると、オブジェクト名はVBAを使わずにパワーポイント上だけでは 確認しようが無いと言うことでしょうか。 また、ユーザー側では勝手につけられないって事でしょうか。

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.2

すでにお気づきかもしれませんが、お恥ずかしい話 CreateObjectについて述べながら、ファイルを開く方のGetObjectを例に挙げてしまいました。両方をヘルプで調べてみてください。 恥の上塗りにならないよう簡単に訂正しておきます。

awada
質問者

お礼

実際に使ってみて動くことがわかりました。 どうもありがとうございます。 で、補足として書いた PowerPointのVBAでマクロの記録を使わず、オブジェクト名 ("Text Box 1")とか)を知る方法がわかる方いないでしょうか?

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.1

Application というオブジェクトがVBAを実行しているExcelやPowerPoint自体を指しますが、そこから他のアプリケーションを呼び出すためにはCreateObject関数を用います。CreateObjectをヘルプで検索してみて下さい。例えば、PowerPointのVBAからExcelのワークシート(シート名Sheet1.xls)のsheet1にあるA1セルの値を呼び出すには Set ExcelWorksheet = GetObject("SHEET1.XLS") ExcelWorksheet.Application.Sheets("Sheet1").Cells(1,1) などとします。一度GetObjectを実行すると後はExcelWorksheetという変数を使ってExcelのシートを制御することができます。 オブジェクト名はNameプロパティで拾うことはできると思いますが、Itemメソッドでコレクションから選ばれたオブジェクトの番号が編集や保存によって並べ替えられるため、他のプロパティを使って特定する必要があります。

awada
質問者

お礼

さっそくのご返答ありがとうございます。 CreateObjectでヘルプをひっぱり試してみたいと思います。 またわからないことがありましたらお願いします。

関連するQ&A

  • VBAで、ExcelとPowerPointの連携

    EXCEL VBAにて、PowerPointのObjectを作って、エクセルからプレゼンテーションの作成をしています。 一旦、パワーポイントのウィンドウが選択された後、Excelのウィンドウを選択する方法がわかりません。 エクセルのデータを読み込んで、パワーポイントに貼り付ける分には、別にエクセルのウィンドウを選択する必要はないので、大きな問題ではありませんが、それでも、エクセルにて、msgboxを実行しようとすると、Excelウィンドウが選択されていないために、フラッシュして、ユーザーに「エクセルを選択しろ」と警告してきます。 この不都合を解消したいのです。 以下のサンプルにて、本当は、(1) の位置にmsgboxを入れたいのですが、上記のことがあるので、(2)の位置にmsgboxを入れて対応しています。 (1)の位置でも、msgboxが素直に表に出てくるように「VBAコードにて、Excelウィンドウを選択する」 方法をよろしくお願い致します。 Sub test1() Dim ppApp As New PowerPoint.Application Dim PPfile As PowerPoint.Presentation With ppApp .Visible = msoTrue .Windows.Application.Left = 600 .Windows.Application.Top = 0 .Windows.Application.Width = 350 .Windows.Application.Height = 350 Set PPfile = .Presentations.Add With PPfile n = .Slides.Count With .Slides.Add(n + 1, ppLayoutTitleOnly) .Select End With End With End With PPfile.SaveAs Filename:=ThisWorkbook.Path & "\" & "mySample.ppt" PPfile.Save PPfile.Close ppApp.Quit ' MsgBox "プレゼンテーション作成終了” '------(1) Set ppApp = Nothing Set PPfile = Nothing MsgBox "プレゼンテーション作成終了” '------(2) End Sub

  • エクセル VBA : テキストボックスのグループ化

    エクセル VBAにてテキストボックスをグループ化したいのです。 マクロを記録すると、 ActiveSheet.Shapes.Range(Array("Oval 82", "Text Box 83")).Select Selection.ShapeRange.Group.Select となります。 "Text Box 83"のように常に名前が固定されているわけではないので、セルのA1からC10にある図形を選択してグループ化するようにしたいのです。 ご存知の方、アドバイス願います。

  • Excel 2000 のVBAにおけるソートについて教えて下さい。

    Excel2002のVBAで、並び替えをマクロ記録させると、Excel2000ではなかったものがあるのですが、これはどんな意味なのですか? 2002で記録されたマクロは、 Selection.Sort Key1:=Range("E2"), Order1:=xlDescending, Header:= xlGuess,OrderCustom:=1, MatchCase:=False,Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:=xlSortNormal です。このうち2000のマクロ記録では最後の DataOption1:=xlSortNormal がないのです。この2002以降(?)で記録されるこの部分はどのような働きをするのですか? また2000では同じような働きをさせるにはどのようにマクロを記述すればいいのですか? よろしくお願いします

  • PowerPointのマクロについて

    PowerPointのマクロについて質問です。 実践したいのは、 『ボタン(オブジェクト)をクリックすると、吹き出しが表示される』 というものです。 「オブジェクトの動作設定」-「マウスのクリック」-「マクロの実行」 で出来ると思うのですが、VBでマクロが書けません… どなたかご存知の方、ご教授いただけると幸いです。

  • Excel2002でマクロやVBAが使えない

    ファイルNO230881にExcel97で作ったマクロがExcel2000で使えないという質問がありましたが、私の場合Excel2000で作ったマクロがExcel2002で使えません。 ファイルNO230881の方は自動修復で直ったそうですが、自動修復のリストにExcel が乗ってきていないので困っています。 起きている症状は、 Excel2000で作成したマクロを、Excel2002で実行しようとしたら、***はマクロを含んでいますとメッセージが出て、マクロを有効にすると、オブジェクトライブラリは登録されていませんというメッセージが出てきたので、OKにし、もう一度マクロを有効にしたら、「***の修復   ***にエラーが検出されましたがMicrosoftExcelは次の修復を行うことによってファイルを開くことができました。修復を保持するにはこのファイルを保存してください。  VisualBasicプロジェクトが失われました。 ActiveXコントロールが失われました。」というエラーメッセージが出てきて、マクロがなくなってしまい、また新しくマクロを記録しようとしても、記録できません、というエラーメッセージが出てきてマクロが作れなくなってしまいました。 尚、セキュリティは中にしてありますが、低でもマクロの記録ができないです。なぜでしょう? VBAプロジェクトのライブラリファイル参照がうまくいっていないということはわかるんですが、VBエディタの[ツール]>[参照設定]がグレーで開くことができません。 みなさんのお知恵をお貸しください。

  • ExcelVBAでPowerPointの操作

    表題の件、質問いたします。 Excelの機能である、マクロ記録を使用して PowerPoint(PPT)を操作してみたが、コードが残っているのは Excelで操作した内容のみとなってしまいます。 ExcelVBAでPPTにExcelグラフの貼り付けや、テキストを追加したいのですが どうやったらよろしいんですか? 参考にコードを記載して頂けると助かります。 それでは、皆様宜しくお願い致します。 ※VBA初心者ですので、易しい内容でお願いします。。。

  • Excel VBA 四角に網掛する方法

    Excel2007を使用しています。 セルではなく、四角とかボタンのオブジェクトをクリックすると、 そのオブジェクトに網掛をするような、VBAは作成可能ですか? というのも、チェックボックスだと、レ点が小さすぎて、 そこにチェックがあるかどうかわかりづらいので、 チェックボックスのレ点の代わりに、その□に網掛をしたいと考えています。 別にチェックボックスでなくても、四角とか丸などの図形の網掛で十分です。 検索方法が悪いのか、できるかどうかもわかりません。 できるかどうかと、オブジェクトのVBAでの表記を教えてください。 よろしくお願いします。

  • Excel2002(xp)でマクロやVBAが使えない

    起きている症状は、 Excel2000で作成したマクロを、Excel2002で実行しようとしたら、***はマクロを含んでいますとメッセージが出て、マクロを有効にすると、オブジェクトライブラリは登録されていませんというメッセージが出てきたので、OKにし、もう一度マクロを有効にしたら、「***の修復   ***にエラーが検出されましたがMicrosoftExcelは次の修復を行うことによってファイルを開くことができました。修復を保持するにはこのファイルを保存してください。  VisualBasicプロジェクトが失われました。 ActiveXコントロールが失われました。」というエラーメッセージが出てきて、マクロがなくなってしまい、また新しくマクロを記録しようとしても、記録できません、というエラーメッセージが出てきてマクロが作れなくなってしまいました。 尚、セキュリティは中にしてありますが、低でもマクロの記録ができないです。なぜでしょう? VBAプロジェクトのライブラリファイル参照がうまくいっていないということはわかるんですが、VBエディタの[ツール]>[参照設定]がグレーで開くことができません。 みなさんのお知恵をお貸しください。

  • EXCEL VBA UserFormで困っています。

    WindowsXP,EXCEL2000を使用しています。 VBA Userform で Fontでポイント数を指定しラベルやテキストボックスを作成します。 作成したオブジェクトをCopyして貼り付けると文字の大きさが変わってしまうことがあります。 Fontのポイント数を確認しても正しく設定されています。 この現象が発生したオブジェクトは削除して作成し直してみても変えることが出来ません。何故でしょうか? 教えてください。

  • VBA初心者です。

    VBA初心者です。 エクセルのVBAにて、 画面全体を選択→フォントをPゴシックにする→印刷設定にて出力用紙サイズをA4に変更→印刷する というマクロをマクロの記録で作成しましたが、出力用紙サイズをA4に変更するところがうまくいきません。 元のサイズはB4なのですが、B4のまま印刷されてしまいます。 何かが間違っているのでしょうか?

専門家に質問してみよう