マンガでよめる痔のこと・薬のこと

実行時にエラー1004 ドキュメントの保存ができませんでした。ドキュメントが開いているか、保存時にエラーが発生した可能性があります。

と出ます。
以下お願いいたします。

ちなみにVBAド素人がちまちまやっています。
他にもおかしい部分がありましたらご教示願います。

Sub ボタン1_Click()

Dim StartTime, StopTime As Variant
'ここから実行時間のカウントを開始します↓コメントアウト中
'StartTime = Time

Application.ScreenUpdating = False
Dim Result As Long
Dim camname

Dim PSheet As String
PSheet = "テンプレ②"
camname = Worksheets(PSheet).Cells(3, 5) '大学名

Result = MsgBox("本当にあってる?????", vbYesNo + vbExclamation)
If Result = vbYes Then

Dim lastrow As Long
Dim i As Long
lastrow = Range("d65536").End(xlUp).row
For i = Range("D4") To lastrow '始まりから終わりまで繰り返し

ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
fileName:=ThisWorkbook.Path & "_" & Date & camname _
& ".pdf", _
Quality:=xlQualityStandard, _
Includedocproperties:=True, _
IgnorePrintAreas:=False, _
openafterpublish:=False

Next i

MsgBox "掲示が【" & ThisWorkbook.Path & "】フォルダ内に格納されました。"

Else
''[いいえ]がクリックされたときの処理
End If

End Sub

質問者からの補足コメント

  • うーん・・・

    以下に変更して実行したら1度だけ動きました。
    ですが2回目以降はまた全く同じエラーが出ます。。。
    書き方が間違っているわけではないのでしょうか。。。

    Result = MsgBox("本当にあってる?????", vbYesNo + vbExclamation)
    If Result = vbYes Then

    --ここから変更--
    Dim i As Long
    For i = Range("B2") To Range("B3") '始まりから終わりまで繰り返し
    Range("I5").Value = i
    --ここまで変更--

      補足日時:2019/12/14 11:05
  • デバックすると
    ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    fileName:=ThisWorkbook.Path & "\" & Date & camname _
    & "_" & Worksheets(PSheet).Cells(i, "E").Value & ".pdf", _
    Quality:=xlQualityStandard, _
    Includedocproperties:=True, _
    Ignoreprintareas:=False, _
    openafterpublish:=False

    の部分が黄色くなります。。

      補足日時:2019/12/14 11:06

A 回答 (6件)

こんにちは、For i Nextについては Range("D4")に数値(1以上)が入っていると想定します。


空欄、文字、0などがあれば、エラーです。Cells(0,"E")は存在しない為。

ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
fileName:=ThisWorkbook.Path & "\" & Date & camname _
& "_" & Worksheets(PSheet).Cells(i, "E").Value & ".pdf", _
Quality:=xlQualityStandard, _
Includedocproperties:=True, _
Ignoreprintareas:=False, _
openafterpublish:=False

ついて、"\"を付けたのはOKです。もう一つ DateはDate型なのでStringに変更する必要があります、

該当部分は、Filename:=ThisWorkbook.Path & "\" & Format(Date, "yyyymmdd") & camname _

また、Worksheets(PSheet).Cells(i, "E").Value についてもString型である必要があるので.Textにした方が良いでしょう。
    • good
    • 0
この回答へのお礼

date部分を失くしたら動くようになりました!
他はおそらく大丈夫ですが、
別シートに同じボタンを作成したところ、保存先が変わってしまいました。
元のシートでは保存先は同じ場所に保存されるのですが、
別シートに同じものを書いているのに、保存場所が1つ上のフォルダになってしまいます。
なにか解決方法をご存知でしたら教えて頂けないでしょうか(>_<)?

お礼日時:2019/12/18 10:51

>これはdateのエラーに対する対処法であってますか??


Date型などに限定する事ではないのですが、他のバージョンや環境で作成したVBAで起きる可能性がある参照不可の事例の対処です。
通常、コンパイルエラーですがレアケースもあるかと思い回答に入れました。

>やはりないと不便なのでFormat(Date…を入れました!日付も入り、ちゃんと動きます!
良かったと思います。

>別シートに同じボタンを作成したところ、保存先が変わってしまいました。
基本的に機械はうそをつかないと言うのが私の経験です。何か原因があると思います。または、
根本的な不具合の可能性を除外しませんが、これについては、改めてスレッドを上げるなどした方が良いと思います。

アドバイスとして、その現象を検証するには、環境などを改めて示されたほうが良いと思いますし、同じコードを
実行しているかなどを検証して示した方が良いでしょう。
VBE 表示  ローカルウィンドウで コードにブレークポイントを設置したり、F8などでステップインなどするのも検証方法として挙げられます。
漠然とした現象だけを質問されても誰も質問を質問で返すしかなく、進まないと思います。

申し訳ありませんが、このスレッドに関しては、解決したものと理解しますのであしからず。
また、追加の質問に関しましても、質問を拝見しタイミングが合えば、回答、検証等のアドバイスが
出来ればと思っていますので、よろしくお願いいたします。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

基本的に機械はうそをつかないと言うのが私の経験です。
ハッとさせられました。おっしゃる通りです。機械はうそをつかないということはどこかでヒューマンエラーがおきているということ。もう一度ボタンの内容を確認したところ、ミスがあり別階層への保存になっておりました。

わたしもVBA超初心者なのでどう質問したら伝わりやすいかわからず、質問を重ねてしまい分かりにくい質問となってしまい申し訳ありませんでした。
質問内容については解決しておりましたが追加での質問にまでお答えいただきましてありがとうございます。
丁寧に最後までご回答いただきまして誠に感謝しております。

機会がございましたらまたよろしくお願いいたします。

お礼日時:2019/12/23 13:36

#4 参照不可:が存在していれば、そのチェックボックスを外して試してください。

(コンパイルエラーでないのでこっちで良いと思いますが、)
追加:参照不可:が存在していれば、そのチェックボックスを外してから再度チェックを入れ試してください。
必要のない参照設定の場合は、外すだけでOKです。
    • good
    • 0
この回答へのお礼

これはdateのエラーに対する対処法であってますか??

お礼日時:2019/12/19 09:54

>別シートに同じボタンを作成したところ、保存先が変わってしまいました。


別シートとは、別ブックですか?別ブックであれば、そのブックは、保存されていますか?
ThisWorkbook.Pathは、VBAが実行されているブックの保存先です。

>date部分を失くしたら動くようになりました!
dateを使用しないならそれでよいと思いますが、通常 Format(Date・・・でファイル名に入れられるはずです。
推測するに、Range("d65536")とあるので旧バージョンのExcelではないでしょうか?
もしそうであれば、dateでエラーが発生している可能性を考えます。
VBEのツールから参照設定を見てください。参照不可:が存在していれば、そのチェックボックスを外して試してください。
    • good
    • 0
この回答へのお礼

別ブックではなく、別シートです。ブック自体は同じものです。
なので、なぜ別の場所に保存されてしまうのか不明なのです…。

dateを失くした状態で動かしていましたが、やはりないと不便なのでFormat(Date…を入れました!
日付も入り、ちゃんと動きます!!
旧バージョンのexcelではないのですが、ネット上からコピペしてきた部分なので
古い記事だったんだと思います。
使用しているexcelは16です!

お礼日時:2019/12/19 09:53

もしかしたら1ページに収まらないので、同じ名前の物が出来てしまっていませんか?

    • good
    • 0
この回答へのお礼

名前は i で変わるので同じものはできません。
dateを失くしたら動きました!
ありがとうございました(^^)!!

お礼日時:2019/12/18 10:47

同じ名前のPDFを作る事になっていますよね?


fileName:=ThisWorkbook.Path & "_" & Date & camname _
& i & ".pdf"
とかにしたらどうなりますか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
同じエラーが出ました。。

お礼日時:2019/12/14 11:01

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング