
実行時にエラー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
No.3ベストアンサー
- 回答日時:
こんにちは、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にした方が良いでしょう。
date部分を失くしたら動くようになりました!
他はおそらく大丈夫ですが、
別シートに同じボタンを作成したところ、保存先が変わってしまいました。
元のシートでは保存先は同じ場所に保存されるのですが、
別シートに同じものを書いているのに、保存場所が1つ上のフォルダになってしまいます。
なにか解決方法をご存知でしたら教えて頂けないでしょうか(>_<)?
No.6
- 回答日時:
>これはdateのエラーに対する対処法であってますか??
Date型などに限定する事ではないのですが、他のバージョンや環境で作成したVBAで起きる可能性がある参照不可の事例の対処です。
通常、コンパイルエラーですがレアケースもあるかと思い回答に入れました。
>やはりないと不便なのでFormat(Date…を入れました!日付も入り、ちゃんと動きます!
良かったと思います。
>別シートに同じボタンを作成したところ、保存先が変わってしまいました。
基本的に機械はうそをつかないと言うのが私の経験です。何か原因があると思います。または、
根本的な不具合の可能性を除外しませんが、これについては、改めてスレッドを上げるなどした方が良いと思います。
アドバイスとして、その現象を検証するには、環境などを改めて示されたほうが良いと思いますし、同じコードを
実行しているかなどを検証して示した方が良いでしょう。
VBE 表示 ローカルウィンドウで コードにブレークポイントを設置したり、F8などでステップインなどするのも検証方法として挙げられます。
漠然とした現象だけを質問されても誰も質問を質問で返すしかなく、進まないと思います。
申し訳ありませんが、このスレッドに関しては、解決したものと理解しますのであしからず。
また、追加の質問に関しましても、質問を拝見しタイミングが合えば、回答、検証等のアドバイスが
出来ればと思っていますので、よろしくお願いいたします。
ご回答ありがとうございました。
基本的に機械はうそをつかないと言うのが私の経験です。
ハッとさせられました。おっしゃる通りです。機械はうそをつかないということはどこかでヒューマンエラーがおきているということ。もう一度ボタンの内容を確認したところ、ミスがあり別階層への保存になっておりました。
わたしもVBA超初心者なのでどう質問したら伝わりやすいかわからず、質問を重ねてしまい分かりにくい質問となってしまい申し訳ありませんでした。
質問内容については解決しておりましたが追加での質問にまでお答えいただきましてありがとうございます。
丁寧に最後までご回答いただきまして誠に感謝しております。
機会がございましたらまたよろしくお願いいたします。
No.5
- 回答日時:
#4 参照不可:が存在していれば、そのチェックボックスを外して試してください。
(コンパイルエラーでないのでこっちで良いと思いますが、)追加:参照不可:が存在していれば、そのチェックボックスを外してから再度チェックを入れ試してください。
必要のない参照設定の場合は、外すだけでOKです。
No.4
- 回答日時:
>別シートに同じボタンを作成したところ、保存先が変わってしまいました。
別シートとは、別ブックですか?別ブックであれば、そのブックは、保存されていますか?
ThisWorkbook.Pathは、VBAが実行されているブックの保存先です。
>date部分を失くしたら動くようになりました!
dateを使用しないならそれでよいと思いますが、通常 Format(Date・・・でファイル名に入れられるはずです。
推測するに、Range("d65536")とあるので旧バージョンのExcelではないでしょうか?
もしそうであれば、dateでエラーが発生している可能性を考えます。
VBEのツールから参照設定を見てください。参照不可:が存在していれば、そのチェックボックスを外して試してください。
別ブックではなく、別シートです。ブック自体は同じものです。
なので、なぜ別の場所に保存されてしまうのか不明なのです…。
dateを失くした状態で動かしていましたが、やはりないと不便なのでFormat(Date…を入れました!
日付も入り、ちゃんと動きます!!
旧バージョンのexcelではないのですが、ネット上からコピペしてきた部分なので
古い記事だったんだと思います。
使用しているexcelは16です!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excelマクロのエラーを解決したいです。
Visual Basic(VBA)
-
VBA PDFで保存するマクロで実行時エラー 1004
Visual Basic(VBA)
-
【Excel VBA】PDFを作成して,指定したフォルダに保存するコードについて
その他(Microsoft Office)
-
-
4
Excel VBA シートを指定してpdf化
Visual Basic(VBA)
-
5
excel マクロ PDF化の際のエラーについて
Visual Basic(VBA)
-
6
【VBA】PDF作成のコードでコンパイルエラーになってしまいます。
Excel(エクセル)
-
7
EXCEL ページを指定してPDF出力するVBAを教えてください。
PDF
-
8
マクロのエラー原因&解決策を教えてください!
PowerPoint(パワーポイント)
-
9
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
【マクロ】エラー【#DIV/0!】が...
-
VBAがブレークモードになっ...
-
ADODB.Streamを使用してUTF-8を...
-
EXCEL VBAマクロ中断でデバッグ...
-
カーソルオープンでエラー(ORA...
-
なぜエラーになるのでしょうか...
-
AccessVBAでExcelを起動し、罫...
-
エクセルでURLに特定文字が含ま...
-
Debug.exe実行時にWinMainCRTSt...
-
VBからAccessへの接続でエラー
-
Invalid procedure call or arg...
-
ACCESSのエラーで困っています
-
エクセルエラー13型が一致しま...
-
エクセルVBA、フリーフォームで...
-
psapi.dllのGetModuleBaseName...
-
トランスポートレベルのエラー
-
Excelの条件式について
-
【VBA】ボタンに登録したマクロ...
-
VB2010 CreateMailslot失敗
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
【マクロ】エラー【#DIV/0!】が...
-
実行時エラー -'-2147417848
-
実行時エラー3001「引数が間違...
-
実行時エラー48発生時のDLL特定...
-
【Excel VBA】マクロをボタンに...
-
マクロについて教えてください...
-
なぜこんな初歩的なVBAのIf文で...
-
VB6+SQL サーバー 2000 で 実行...
-
OLEDB.NETで接続できない
-
EXCEL/VBAで、自分のPCだけエラ...
-
ExcelVBA Range クラスの Page...
-
Invalid procedure call or arg...
-
VBAでのエラー
-
AccessVBAでExcelを起動し、罫...
-
[Delphi] データセットは閉じて...
-
VBAで実行時エラー'424' オブジ...
-
なぜエラーになるのでしょうか...
-
ADODB.Streamを使用してUTF-8を...
おすすめ情報
以下に変更して実行したら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
--ここまで変更--
デバックすると
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
fileName:=ThisWorkbook.Path & "\" & Date & camname _
& "_" & Worksheets(PSheet).Cells(i, "E").Value & ".pdf", _
Quality:=xlQualityStandard, _
Includedocproperties:=True, _
Ignoreprintareas:=False, _
openafterpublish:=False
の部分が黄色くなります。。