
PDFを作成するマクロを作りたいため,以下のコードを作ろうとすると,「コンパイルエラー 修正候補 式」「「コンパイルエラー 修正候補 識別子」といったメッセージが出て,下の4行(TypeからIgnore・・まで)が赤字になってしまいます。
なお,FileNameの「l」は,「Dim l As String」「l = Worksheets("成績").Range("A4").Value」と変数で定義しています。
Worksheets("成績").Select
ActiveWindow.SelectedSheets.ExportAsFixedFormat_
Type:=xlTypePDF,
FileName:=l,
OpenAfterPublish:=True,
IgnorePrintAreas:=False
どのように修正したら良いのか,ご教示願います。
よろしくお願い申し上げます。
No.8ベストアンサー
- 回答日時:
No.4,5,6,7です。
>しかし,ファイル名が連続して変わるコードに既になっていると思います。
なにか勘違いがあると思います。
>A5セルには数式が入っているため,順番に代わります
For~Nextの外で変えても意味がありません。
>fileName:=iにすると意図するファイル名とは違いますが(数字です),順番にPDFが作成・保存されます。
まさしく、このようにForの後にファイル名変更コードを書かないと意味がない訳です。
No.10
- 回答日時:
シンクライアント環境だと、システム管理者でないと実態を把握できません。
Cドライブ自体が仮想化されている可能性もあります。
試してみてよいなら、No.5で回答したように
C:\User\user\DeskTop\ファイル名.pdf
というようにファイル名の前に自分のDeskTopのフルパスを付けたファイル名にすれば、自分のデスクトップな保存されるはずです。
あくまでも「はずです」であり、シンクライアント環境はシステム管理者でないと本当のところは判りません。
No.9
- 回答日時:
No.4,5,6,7,8です。
ファイル名は
l = Worksheets("成績").Range("A5").Value
で指定しているわけですから、For~Nextの外です。
J~kが変わってもlが変わることはありません。
どうしても納得いかないなら、
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=l, OpenAfterPublish:=False, IgnorePrintAreas:=False
の直前に
Debug.Print "l=", l
を入れて実行してみてください。
実行後VBEエディタを開いて、CTRL+Gを押し、「イミディエイトウィンドウ」を開いて確認してみてください。
lの値が全て同じになっていると思います。
いろいろとありがとうございます。
おっしゃるとおり修正したらうまく動きました。
一点,伺いたいのですが,今のコードだと,使用しているシンクライアント端末のドライブにPDFが作成され保存されます。デスクトップに保存されるようにするにはどのようにすれば良いか教えていただけると幸いです。
No.7
- 回答日時:
No.4,5,6です。
VBAのコードを見るとPDF出力する「成績」シートはFor~Nextの間で何ら変更されていないように見受けられます。
この状態で、For~Nextで複数回PDFを作成する意図がわかりません。
No.6でファイル名を連続して変更するコードを入れると書きましたが、それをしても、ファイル名の違う中身の同じPDFが複数できあがるだけです。
どういう目的なのでしょうか?
ありがとうございます。先ほどのお礼でも書かせていただきましたが,変数iがjからkの間で変わる度に「成績」シートは書き換わっていきます。成績シートは,ほとんど全部,数式で値を入れています。
No.6
- 回答日時:
見落としていました。
OpenAfterPublish:=True
を指定しているので、1枚目を作成した時点で、ドキュメントが開いている状態になっています。
従って、2枚目以降が作成されないのは当たり前でした。
OpenAfterPublish:=false
にすれば、エラーは出なくなりますが、PDFが上書きされてしまうので、
For以下かつ
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=l, OpenAfterPublish:=False, IgnorePrintAreas:=False
の前にファイル名を連続して変更するコードを追加する必要があると思います。
ありがとうございます。
しかし,ファイル名が連続して変わるコードに既になっていると思います。
変数iがjからkの間で変わる間に,A5セルには数式が入っているため,順番に代わります。また,falseにしても,最初の1枚しか作成・保存されません。
わかった点としては,「ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=l, OpenAfterPublish:=True, IgnorePrintAreas:=False」の部分で,fileName:=lをfileName:=iにすると意図するファイル名とは違いますが(数字です),順番にPDFが作成・保存されます。
fileName:=lだと,A5セルに入力してある数式が返した値をファイル名にすることになりますが,1枚しかPDFは作成されず,実行時エラー1004で止まってしまいます。
何がいけないんでしょうか。。
No.5
- 回答日時:
No.4です。
ご質問者の掲示されたコードを、こちらで実行してみたところ、何の問題もなくPDFが出力されます。
もしかしたら、指定したフォルダがない(サブフォルダの場合、別の親フォルダの下に作成していた)とか、フォルダはあるが書き込み権限のないフォルダに書き込みしようしているとか、ファイル名に問題があるとか、パスの区切りに「/」を使用しているとかの問題かもしれません。
変数「l」にファイル名を入れているとのことですが、フルパスでのファイル名を、例えばシート名「成績」のA5セルに、以下のように入力して、検証しやすいものにしてみたらどうなるのでしょう?
C:\User\user\DeskTop\出力ファイル.pdf
※小文字のuserの部分はご自分のユーザー名
上記のようにしたらどうなるか試してみてください。
また、以下のURLも参考になると思います。
https://teratail.com/questions/124283
https://kiraku-space.com/?p=1493
https://oshiete.goo.ne.jp/qa/10033009.html
ありがとうございます。
使用しているPCがシンクライアント端末というのが関係しているのかもしれませんが,デスクトップのパスが回答者様が書かれたような形式ではないのかもしれません。
順次,PDFを印刷していくマクロですが,最初のものしか作成されず,2枚目の作成中に「実行時エラー1004 ドキュメントを保存できませんでした。ドキュメントが開いているか,保存時にエラーが発生した可能性があります。」とエラーメッセージが出て止まってしまいます。
回答者様は,最初のデータだけではなく,変数j,kで指定した範囲のデータがすべてPDFとして出力されますか?
どこがいけないのか,不明です。
No.4
- 回答日時:
PDFを作成するマクロといっているだけで、どのように作成したいのかについて説明がありません。
仮に画面上で選択している複数のシートを一つのPDFファイルとして出力したいということなら、以下のように対象シートを配列にいれてから選択してください。
また、コードの中の
ActiveWindow.SelectedSheets.をActiveSheet.に修正してください。
さらに、投稿された内容では正確に判断できませんが、
ExportAsFixedFormatとType:=の間には半角スペースが必要です。
従って、
Dim I As String
............................................
Dim targetsheet1 As String
Dim targetsheet2 As String
targetsheet1 = "Sheet1"
targetsheet2 = "Sheet2"
Sheets(Array(targetsheet1, targetsheet2)).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=I, OpenAfterPublish:=True, IgnorePrintAreas:=False
上記のようなコードになると思います。
丁寧に説明していただき,誠にありがとうございます。
しかし,そのように修正すると,「実行時エラー1004 ドキュメントを保存できませんでした。ドキュメントが開いているか,保存時にエラーが発生した可能性があります。」とエラーメッセージが出てしまいます。(デバック時は,ActiveSheet.ExportAsFixedFormat~の部分が黄色くなっています)
なお,コードは以下のものです。順番にPDFを作成したいと思っています。
どのように修正したらよいか,ご教示いただけると幸いです。
Dim i As Long
Dim j, k As Long
Dim l As String
j = Worksheets("作業").Range("AC100").Value
k = Worksheets("作業").Range("AC101").Value
l = Worksheets("成績").Range("A5").Value
For i = j To k
Worksheets("作業").Range("Z500").Value = Worksheets("元").Cells(i + 1, 1).Offset(, 5).Value
Worksheets("成績").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=l, OpenAfterPublish:=True, IgnorePrintAreas:=False
Next i
No.1
- 回答日時:
こんばんは
内容は確認していませんけれど・・
>(TypeからIgnore・・まで)が赤字になってしまいます。
1行のセンテンスを改行を入れて記述しているので、連続するという「 _」を各行末に記す必要があります。
ActiveWindow.SelectedSheets.ExportAsFixedFormat _
Type:=xlTypePDF, _
fileName:=L, _
OpenAfterPublish:=True, _
IgnorePrintAreas:=False
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excelマクロのエラーを解決したいです。
Visual Basic(VBA)
-
【Excel VBA】PDFを作成して,指定したフォルダに保存するコードについて
その他(Microsoft Office)
-
エクセルをPDFで保存し、ファイル名はA1セルを参照するVBAの記述を教えてください。
Excel(エクセル)
-
-
4
【VBA】PDF出力に任意のファイル名前を付ける方法
Excel(エクセル)
-
5
VBA PDFで保存するマクロで実行時エラー 1004
Visual Basic(VBA)
-
6
EXCEL ページを指定してPDF出力するVBAを教えてください。
PDF
-
7
エラー1004 PDFの保存ができません。解決方法を教えてください。
Visual Basic(VBA)
-
8
Excel VBA シートを指定してpdf化
Visual Basic(VBA)
-
9
エクセルマクロでPDF表示をしたい
PDF
-
10
マクロのエラー原因&解決策を教えてください!
PowerPoint(パワーポイント)
-
11
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
12
オートフィルタのリストを順番に印刷できるマクロ
Windows Vista・XP
-
13
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
14
VBAマクロ excel2008では使えるが、excel2003では使えない関数
Visual Basic(VBA)
-
15
Excelの選択範囲を特定のセル値をファイル名にしてPDFで保存する
Excel(エクセル)
-
16
マクロボタンを押すと、ファイル名を“日付(年月日)_文字.xlsx”にして指定ファイルに保存したいの
Excel(エクセル)
-
17
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「訂正」と「修正」の違いはな...
-
ゆめにっき修正版をダウンロー...
-
データベース関係で、データの...
-
編集用語「実データ」とは?
-
エクセルで作業後、同じ名前の...
-
「データをプロットする」の意...
-
勘定奉行をつかって前年対比が...
-
ネガデータって何?
-
EEPROMのデータが壊れる。
-
弥生会計のデータを
-
access 登録したデータを修正...
-
いつも弥生会計で上書き保存の...
-
IBMフォーマットのデータを...
-
分割したGHOSTイメージを元に戻...
-
弥生会計オンラインで、バック...
-
弥生会計のデータコンバート
-
figmaの元データは残したまま、...
-
弥生会計で困っています
-
貸借対照表の保険積立金って?
-
弥生会計10の仕訳日記帳のイン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「訂正」と「修正」の違いはな...
-
【VBA】PDF作成のコードでコン...
-
bluewindで、リンク参照先が大...
-
wordの機能について
-
2つのエクセルファイルの相違...
-
人生修正したいですか?
-
ゆめにっき修正版をダウンロー...
-
ホームページの修正、更新のみ...
-
顧客らくだとgmail
-
Dreamweaverのチェックイン、チ...
-
アカウントの修正の要有り、共...
-
顔の輪郭修正はphotoshop eleme...
-
Wixでホームページ作成、コンテ...
-
「Macの青色申告」について
-
ビジネスにおいて「修正」の限...
-
データベース関係で、データの...
-
「データをプロットする」の意...
-
編集用語「実データ」とは?
-
ネガデータって何?
-
ID Manager ログインできない!!
おすすめ情報