PowerpointVBAでExcelを操作する。
yahooやgoogleで powerpoint vba を検索します。
すると,Excel VBAでPowerpointを操作するという話がほとんど。
みんなが望んているのは本当にそれだろうか。
少なくともわたしはそれを探してこんな検索してないけどなーと。
くやしかったので,逆をすることを書いてみます。
Option Explicit Sub Excelデータの取り込み() Dim TSlide As Slide: Set TSlide = ActivePresentation.Slides(1) 'パスワードもどき Dim strPass As String strPass = InputBox("パスワードを半角英数字で入力して下さい。") '気持ちそれっぽく If strPass <> "mondai" Then Exit Sub 'ファイルを開きます Dim FD As FileDialog Dim SelectedFile As Variant Dim i As Byte Set FD = Application.FileDialog(msoFileDialogOpen) DoEvents With FD .Title = "問題を取り込むExcelブックを指定してください。" With .Filters .Clear .Add "Excelブック", "*.xls; *.xlsx; *.xlsm", 1 End With .InitialFileName = ActivePresentation.Path & "\" .InitialView = msoFileDialogViewList If .Show = True Then Set SelectedFile = .SelectedItems End If End With If FD.SelectedItems.Count = 0 Then Exit Sub '素早くオブジェクト変数に放り込む Dim objXlapp As Object: Set objXlapp = CreateObject("Excel.Application") Dim objXlbook As Object: Set objXlbook = objXlapp.workbooks.Open(SelectedFile(1)) Dim lngSheetsuu As Long lngSheetsuu = objXlbook.worksheets.Count Dim shpTable As Shape: Set shpTable = TSlide.Shapes.AddTable(lngSheetsuu, 2) Dim xlSht As Object For i = 1 To lngSheetsuu Set xlSht = objXlbook.worksheets(i) shpTable.Table.Cell(i, 1).Shape.TextFrame.TextRange = xlSht.Name shpTable.Table.Cell(i, 2).Shape.TextFrame.TextRange = xlSht.Range("a1").Value Next End Sub
ちょっといらないこともやってます。
'パスワードもどき Dim strPass As String strPass = InputBox("パスワードを半角英数字で入力して下さい。") '気持ちそれっぽく If strPass <> "mondai" Then Exit Sub
なにも知らない人にはこれでも,十分に効く。
隠す気は無いので,コードに保護かけたりわたしはしないんですけど,すぐには触れないように,というときに使います。
このコードを使うとこうなります。
ファイルダイアログとかわたしも得意ではないんですが,十分便利なもの。
そして,開いたものをすぐオブジェクト変数に放り込んで,Workbookなどに手軽にアクセスできるようにすれば,
ExcelVBAが扱える人ならいくらでもコードが書ける。
けっこう楽です。
問題などを入力するときはExcelが圧倒的に楽なので,あちらで問題データを作って,
Powerpointに流し込むときに,このコードを切り貼りすれば,十分いけると思われます。