• 締切済み

パワーポイントのマクロでエクセルを操作する方法

初めて投稿いたします。 最近マクロを勉強し始めたのですが、パワーポイントに埋め込んだエクセルをマクロで動かすことができるでしょうか? やりたい内容としては、 ・パワーポイントに埋め込まれたエクセルデータを開く ・エクセルのデータを編集 ・エクセルを閉じる ・いくつかののページでこれを繰り返す です。 新しいマクロを記録で記録し、マクロを実行するとパワーポイントのテキストなどは変更されるのですが、エクセルデータはもとのままです。 どなたか教えてください。

みんなの回答

  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.5

そうですね。 確かに難易度の高いことにチャレンジしようとしています。 参照設定のこととか、まだ次のステップがあったのですが、 あきらめてください。 理由は以下の通りです。 1.環境に左右される Macや古いバージョンのExcelでは下のコードは動かないと思います。 2.仮にそうではなかったとしても ・Excel,PowerPointのバージョンも最後まで 書き込まない ・Excelのコードは書けるのかを知りたかったので、 Excelでマクロ記録をとれという意味なのに PowerPointの無駄なマクロ記録を書き込む など、あなたの現在のスキルでは無理だと思います。

  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.4

では、Excel2000でも動くコードに修正。 下の手順でテストをしてください。 これが動く環境でないと何も始まりません。 Excelでどこかに「あ」という文字を含む表を作成 →範囲をコピー →PowerPointで新規作成したファイルに 貼り付け【Excelの表(ブック全体)】 または 形式を選択して貼り付け【Microsoft Excel ワークシートオブジェクト】 →Excel終了 →以下のコードを必ずSub~End Subまで貼り付け Sub xl_Test() Dim objExl As Object 'Excelに参照設定していればExcel.Application Dim myBook As Object 'Excel.Workbook Dim n As Long Dim Shp As Shape ActiveWindow.ViewType = ppViewNormal With ActivePresentation.Slides  For n = 1 To .Count   ActiveWindow.View.GotoSlide n   For Each Shp In .Item(n).Shapes    With Shp     If .Type = msoEmbeddedOLEObject Then      With .OLEFormat       If Left$(.ProgID, 11) = "Excel.Sheet" Then        .DoVerb (2)        Set myBook = .Object        Set objExl = myBook.Application        objExl.DisplayAlerts = False        With myBook.Worksheets(1).Cells         .Replace What:="あ", _          Replacement:="A"        End With        myBook.Close        objExl.DisplayAlerts = True        objExl.Quit       End If      End With     End If    End With   Next  Next n End With Set myBook = Nothing Set objExl = Nothing End Sub

nxt_gene
質問者

お礼

教えて頂いた通りにし、コードを入力しましたが、またコンパイルエラーが出てしまいました。 私の環境では実現が難しいのでしょうか? 今回はあきらめることに致します。 何度もお返事いただきましてありがとうございました。 

  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.3

で、新規ファイルにExcelの表を埋め込んで、 No.2のコードを試してみましたか? それからExcelだけの部分のコードは? もちろんマクロ記録でもOKです。 以上2つ、お答えください。

  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.2

最初のconstの2行を忘れました。 NO.1のコードは無視してください。 Sub xl_Test() Const xlPart = 2 Const xlByRows = 1 Dim objExl As Object 'Excelに参照設定していればExcel.Application Dim myBook As Object 'Excel.Workbook Dim n As Long Dim Shp As Shape ActiveWindow.ViewType = ppViewNormal With ActivePresentation.Slides  For n = 1 To .Count   ActiveWindow.View.GotoSlide n   For Each Shp In .Item(n).Shapes    With Shp     If .Type = msoEmbeddedOLEObject Then      With .OLEFormat       If Left$(.ProgID, 11) = "Excel.Sheet" Then        .DoVerb (2)        Set myBook = .Object        Set objExl = myBook.Application        objExl.DisplayAlerts = False        With myBook.Worksheets(1).Cells         .Replace What:="あ", _          Replacement:="A", _          LookAt:=xlPart, _          SearchOrder:=xlByRows, _          MatchCase:=False, _          SearchFormat:=False, _          ReplaceFormat:=False        End With        myBook.Close        objExl.DisplayAlerts = True        objExl.Quit       End If      End With     End If    End With   Next  Next n End With Set myBook = Nothing Set objExl = Nothing End Sub

nxt_gene
質問者

補足

返信が遅くなり、申し訳ありません。 No.2を入れ込むとコンパイルエラー End Subが必要ですとメッセージが出ます。 EXCELのコードは記録をしていくと下記のようになります。 ・パワーポイントに埋め込まれたエクセルデータを開く ・エクセルのデータを編集 ・エクセルを閉じる ・いくつかののページでこれを繰り返す (コード)   ActiveWindow.Selection.SlideRange.Shapes("Object 15").Select ActiveWindow.Selection.ShapeRange.OLEFormat.DoVerb Index:=1 ActiveWindow.SmallScroll Down:=1 ActiveWindow.View.GotoSlide Index:=2 ActiveWindow.Selection.SlideRange.Shapes("Object 5").Select ActiveWindow.Selection.ShapeRange.OLEFormat.DoVerb Index:=1 ActiveWindow.SmallScroll Down:=1 ActiveWindow.View.GotoSlide Index:=3 ActiveWindow.Selection.SlideRange.Shapes("Object 18").Select ActiveWindow.Selection.ShapeRange.OLEFormat.DoVerb Index:=1 ActiveWindow.SmallScroll Down:=1 ActiveWindow.View.GotoSlide Index:=4 ActiveWindow.Selection.SlideRange.Shapes("Object 84").Select ActiveWindow.Selection.ShapeRange.OLEFormat.DoVerb Index:=1

  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.1

Excelの編集内容がわからないと無理です。 置換するのか、*.xlsファイルとして書き出すのか。 下のコードは「あ」を「A」に置換するサンプルです。 Sub xl_Test() Dim objExl As Object 'Excelに参照設定していればExcel.Application Dim myBook As Object 'Excel.Workbook Dim n As Long Dim Shp As Shape ActiveWindow.ViewType = ppViewNormal With ActivePresentation.Slides  For n = 1 To .Count   ActiveWindow.View.GotoSlide n   For Each Shp In .Item(n).Shapes    With Shp     If .Type = msoEmbeddedOLEObject Then      With .OLEFormat       If Left$(.ProgID, 11) = "Excel.Sheet" Then        .DoVerb (2)        Set myBook = .Object        Set objExl = myBook.Application        objExl.DisplayAlerts = False        With myBook.Worksheets(1).Cells         .Replace What:="あ", _          Replacement:="A", _          LookAt:=xlPart, _          SearchOrder:=xlByRows, _          MatchCase:=False, _          SearchFormat:=False, _          ReplaceFormat:=False        End With        myBook.Close        objExl.DisplayAlerts = True        objExl.Quit       End If      End With     End If    End With   Next  Next n End With Set myBook = Nothing Set objExl = Nothing End Sub

nxt_gene
質問者

補足

ありがとうございます。 EXCELデータの書き出しです。 EXCELの内容は、先月と今月のデータ更新で、たとえばA列が先月データ、B列が今月データ。 今月データを先月データに移し、今月データを入力出来るように、今月データを空欄にすると言った具合です。

関連するQ&A

専門家に質問してみよう