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.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.8ベストアンサー
- 回答日時:
No.4,5,6,7です。
>しかし,ファイル名が連続して変わるコードに既になっていると思います。
なにか勘違いがあると思います。
>A5セルには数式が入っているため,順番に代わります
For~Nextの外で変えても意味がありません。
>fileName:=iにすると意図するファイル名とは違いますが(数字です),順番にPDFが作成・保存されます。
まさしく、このようにForの後にファイル名変更コードを書かないと意味がない訳です。
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- Excel(エクセル) このコードに追記事項の仕方を教えて下さい。 以下のコード内容に出てくる。セルH3が空白の場合、エラー 4 2023/08/03 00:22
- Excel(エクセル) 【マクロ】ファイル名の日付によって、保管するフォルダを、自動選択したい 4 2023/08/16 11:24
- Excel(エクセル) エクセル2019でPDFファイル名に枝番号をつけたい。 アクティブワークシートを印刷した後の処理とし 4 2023/06/06 21:00
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- Visual Basic(VBA) ワイルドカード「*」を使うとうまくいかないマクロの添削をお願いします 3 2022/03/26 09:39
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 2 2022/11/18 15:34
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
このQ&Aを見た人はこんなQ&Aも見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
VBA PDFで保存するマクロで実行時エラー 1004
Visual Basic(VBA)
-
Excelマクロのエラーを解決したいです。
Visual Basic(VBA)
-
エクセルをPDFで保存し、ファイル名はA1セルを参照するVBAの記述を教えてください。
Excel(エクセル)
-
-
4
エラー1004 PDFの保存ができません。解決方法を教えてください。
Visual Basic(VBA)
-
5
Excel VBA シートを指定してpdf化
Visual Basic(VBA)
-
6
Excelの選択範囲を特定のセル値をファイル名にしてPDFで保存する
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
別のシートから値を取得するとき
Visual Basic(VBA)
-
9
マクロ、PDFを任意のフォルダへ保存
Excel(エクセル)
-
10
EXCEL ページを指定してPDF出力するVBAを教えてください。
PDF
-
11
【VBA】PDF出力に任意のファイル名前を付ける方法
Excel(エクセル)
-
12
EXCELマクロで、開いてはいるがアクティブでないファイルをアクティブにする方法?
Excel(エクセル)
-
13
Excel VBA 空白セルがあったらメッセージボックスで知らせたい
Visual Basic(VBA)
-
14
エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの
Excel(エクセル)
-
15
エクセル マクロ 名前を付けて保存 PDF保存先指定 ファイル名任意+日付
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「訂正」と「修正」の違いはな...
-
[グーグルアース] オブジェクト...
-
【VBA】PDF作成のコードでコン...
-
「データをプロットする」の意...
-
データベース関係で、データの...
-
IBEX出納帳での次期データ入力
-
身の回りの困り事を解決する課...
-
編集用語「実データ」とは?
-
ワープロ(ルポ)のFDが読めない
-
大学の科研費について
-
アイフォンとPC同期(アイチュ...
-
VBAで横のデータを縦に蓄積させ...
-
TKC会計 FX2について
-
農林水産省の食糧需給表につい...
-
access 登録したデータを修正...
-
勘定奉行iへのデータコンバート...
-
ExcelのSUMIFS関数について色々...
-
WIN10ノートPCコピーでのデバイ...
-
給与奉行のデータをエクセルに...
-
勘定奉行をつかって前年対比が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「訂正」と「修正」の違いはな...
-
【VBA】PDF作成のコードでコン...
-
顧客らくだとgmail
-
これどう修正されますか? いろ...
-
ドリームウエバーで制作したH...
-
Pdf文書の修正方法
-
VisualStudio2008 で iostream...
-
ホームページの修正、更新のみ...
-
プリクラを整形アプリやパソコ...
-
データベース関係で、データの...
-
「データをプロットする」の意...
-
海外とのやり取り(英語)に関す...
-
編集用語「実データ」とは?
-
ストレージの中に破損している...
-
IBEX出納帳での次期データ入力
-
ネガデータって何?
-
EEPROMのデータが壊れる。
-
【弥生会計】組戻しの際の相手...
-
身の回りの困り事を解決する課...
-
ExcelのSUMIFS関数について色々...
おすすめ情報