プロが教えるわが家の防犯対策術!

Mac版 Excel VBA PDF出力フォルダについて

お世話になります。

MicrosoftOfficeのMac版を使用しております。
バージョン:16.16.18

帳票を作成してPDFで出力したいのですが、
おそらくフォルダに権限がないからだと思われるのですが、
下記のようなエラーダイアログが表示されてしまいます。

------------------------------------------
プリント
プリント中にエラーが起きました。
[OK]
------------------------------------------

上記のダイアログを「OK」ボタンで閉じると以下のようなエラーコードが表示されます。

---------------------------------------------------------------------------
実行時'1004':
アプリケーション定義またはオブジェクトの定義エラーです。
[ヘルプ]     [続行]     [End]     [デバッグ]
---------------------------------------------------------------------------

出力先を指定しない場合は、デフォルトの出力先?に出力されますが、希望としては
同じフォルダ内の1階層下に作成したフォルダへ出力したいと考えております。

こちらは何か対処法などはございますでしょうか。

A 回答 (2件)

普段macを使ってるわけじゃないのですが


> サンドボックスは、アプリがアプリコンテナー外のリソースにアクセスするのを制限します。
との事なのでVBAコードからのアクセスは無理なんじゃないでしょうか
手動ではできるのですか?
その場合手動操作をエミュレートするような方法で可能かもしれませんが精度的に無理そう

・別案としてExportAsFixedFormatを使うのではなくpdfプリンタで出力する事で可能となるかどうか
(試してないので思いつきレベル)
・pdfファイル作成→後で移動、とかAppleScriptTaskで可能なのか
 https://docs.microsoft.com/ja-jp/office/vba/offi …
(試してないので思いつきレベルその2)

現実的には、『macでExcelVBAの場合、サンドボックス内で作業する事を受け入れる』が妥当な気がします
    • good
    • 0

ThisWorkbook.Path の1階層下に既にフォルダ(仮に「Test」)が作成してある場合、



Dim foldName As String: foldName = "Test" 'Target folder
Dim pdfName As String
foldName = ThisWorkbook.Path & Application.PathSeparator & foldName & Application.PathSeparator
pdfName = ThisWorkbook.Name
pdfName = Left(pdfName, InStrRev(pdfName, ".") - 1)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=foldName & pdfName

こんな感じのを試してみても良いかもですが
以下と同じ状況だったら厳しいのかな

Mac ExcelVBAでPDF出力をする方法
https://teratail.com/questions/102122

└Unable to save as PDF from VBA in mac
 https://stackoverflow.com/questions/38148305/una …

└Office for Mac
 https://docs.microsoft.com/ja-jp/office/vba/api/ …
    • good
    • 1
この回答へのお礼

大枠、頂いているような内容で作成しようとしているのですが、後者でいただいているURLの通り該当ディレクトリにPDFを作成する権限がないのでは無いかなと思っています。

出力先を指定しない場合、上のサイトに記載されている、/Users/username/Library/Containers/com.microsoft.Excel/Dataの配下に作成されてしまいます。

指定したフォルダに出力はできないのでしょうか。。。

お礼日時:2020/01/23 14:50

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