質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

2回答

1805閲覧

PowerPoint for Mac マクロ パスがうまく指定できません

higashi110

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2021/02/05 01:20

前提・実現したいこと

PowerPoint for Mac ver16.45

パワーポイントのマクロでスライドをPNGで、任意のスライド名で保存する方法を検討しています。
理想はslide1.png,slide2.pngと保存していきたいのですが、保存先のパスを指定するところで、任意のフォルダに指定ができずに困っています。

発生している問題・エラーメッセージ

以下のようなソースコードで、まずは任意の場所にスライドをPNGで保存したいのですが、このマクロでは/Users/ユーザーの名前/Pictures:fileName と言う感じで、[Pictures:fileName]と言うフォルダができてしまいます。 まず作りたいところは「ピクチャ」の場所なんですが。 このスライドがあるディレクトリは/Users/ユーザーの名前/ピクチャ/にいるのですが、.Pathで取得したパスはPictureになってるんですよね。 それに、最終的には/Users/ユーザーの名前/ピクチャ/fileName/slideOO.png と作っていきたいのですが、まずパスがうまくできません。 powerpoint for Mac ではパスの区切りは[:]と言うらしいですが、これも適切に区切られず、[/,]も同様です。 powerpoint for Macでのバグなのか、私のソースコードがおかしいのか、正直マクロを組むのが初めてなので、つまづいてしまいました。 ご助言、よろしくお願いします。

該当のソースコード

VBA

1Sub saveAsPng() 2 3 Dim filePath As String 4 Dim fileName As String 5 6 With ActivePresentation 7 8 '保存場所 9 filePath = .path 10 11 'ファイル名 12 fileName = Left(.Name, InStrRev(.Name, ".") - 1) 13 14 Dim path As String 15 path = filePath & ":" & fileName 16 17 MsgBox path 18 19 '指定の場所にファイルを保存 20 .Export path, "PNG" 21 22 MsgBox path 23 End With 24 25End Sub

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

区切り文字は"/"でいいはずです。
ピクチャフォルダ以外の場所(書類フォルダとか)で動かしても同じ挙動ですか?

<追記>
以下の記事にもあるように、セキュリティ的な理由でファイルを保存する場所に制約があるようです。
Mac ExcelVBAでPDF出力をする方法

投稿2021/02/08 03:28

編集2021/02/08 07:12
jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

higashi110

2021/02/08 09:06

様々なフォルダで試してみたところ、 実行時エラー'-2147467259': Presentation(unknown number):エクスポート時に、複数のディレクトリを作成することはできません。 と出ます。 /Users/Username/000 ここの階層しかセキュリティ上無理なんでしょうかね
guest

0

まずは
Debug.Print Application.PathSeparator
としてパス区切り文字を確認してみてはいかがでしょう。

「ピクチャ」は「Picture」で正解です。
Picutreがピクチャフォルダに設定されているからです。

パワーポイントではPathSeparatorはありませんでした。失礼しました。
参照設定で「Microsoft Excel xx Object Library」にチェックを入れて
下記を実行していただければパス区切り文字の確認ができます。

vba

1Sub GetPathSeparator() 2 3Dim app As Excel.Application 4Set app = New Excel.Application 5 6Debug.Print app.PathSeparator 7 8End Sub

投稿2021/02/05 01:59

編集2021/02/05 02:51
radames1000

総合スコア1923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

higashi110

2021/02/05 02:33

回答ありがとうございます。 Application.PathSeparatorを使おうとすると、予測変換にまず候補がないのですが、直書きした場合、以下のようなエラーが出ます。 使っているエディターは標準のパワーポイントのマクロから編集しているのですが・・・。 コンパイル エラーです。: メソッドまたはデータ メンバーが見つかりません。
higashi110

2021/02/05 05:06

改めて回答ありがとうございます。 このPathSeparatorで確認、またそれらを使いたいのですが、以下のようなエラーが出ます。 ライブラリは有効にしています。 調べてもこのエラーコードの解決策の情報があまり出てこず、かなり長時間格闘していますが、解決できませんでした。 エラーコード ============================================= 実行時エラー'430': クラスはオートメーションをサポートしていないか、または必要なインターフェイスをサポートしていません。 =============================================
radames1000

2021/02/05 05:10

今はWindowsの環境でしか確認できていないので、 もしかたら異なる方法が必要なのかもしれません。 申し訳ないです。
higashi110

2021/02/05 06:55

すみません、ありがとうございました 多分、Powerpoint for Macがかなり曲者らしいです。
radames1000

2021/02/05 07:54

ActivePresentation.FullNameを確認していただけたらフルパスが出るので 区切り文字が明確になりそうです。(Windowsで確認ですが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問