実行時にエラー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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) このコードに追記事項の仕方を教えて下さい。 以下のコード内容に出てくる。セルH3が空白の場合、エラー 4 2023/08/03 00:22
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
VBA PDFで保存するマクロで実行時エラー 1004
Visual Basic(VBA)
-
Excelマクロのエラーを解決したいです。
Visual Basic(VBA)
-
Excel VBA シートを指定してpdf化
Visual Basic(VBA)
-
-
4
【VBA】PDF作成のコードでコンパイルエラーになってしまいます。
Excel(エクセル)
-
5
excel マクロ PDF化の際のエラーについて
Visual Basic(VBA)
-
6
エクセルをPDFで保存し、ファイル名はA1セルを参照するVBAの記述を教えてください。
Excel(エクセル)
-
7
日付を入力したセルをファイル名にして保存するには
Excel(エクセル)
-
8
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
9
エクセルで表示形式の時刻の「0:00」を表示しないようにするには?
Excel(エクセル)
-
10
Excel VBAでPDFファイルをMicrosoft Print to PDFで出力したい
Visual Basic(VBA)
-
11
ExcelVBAでPDFを閉じるソース
その他(Microsoft Office)
-
12
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
13
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
14
【Excel】指定したセルの名前でPDFを保存する【VBA】
Visual Basic(VBA)
-
15
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
なぜこんな初歩的なVBAのIf文で...
-
VBSで変数の宣言はできないので...
-
デバッグ時はOK、デバッグ無し...
-
プロシージャ名の取得
-
【Excel VBA】マクロをボタンに...
-
エラーDlg「An invalid argumen...
-
エクセルエラー13型が一致しま...
-
SQL文をVBAで流すと「型...
-
1列目の何行目に検索文字がある...
-
VBAのコードがエラーになっ...
-
VB6+SQL サーバー 2000 で 実行...
-
エクセルでURLに特定文字が含ま...
-
実行時エラー -'-2147417848
-
ExcelVBAでsortしようとしたと...
-
VBで構造体を使うさ際の64k...
-
ExcelVBA Range クラスの Page...
-
【VBA】ボタンに登録したマクロ...
-
[Delphi] データセットは閉じて...
-
VB6→VS2005アップグレード後の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
VBAでのエラー
-
マクロについて教えてください...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
VBS実行時エラー オブジェクト...
-
EXCEL VBAマクロ中断でデバッグ...
-
Outlook.ApplicationをCreateOb...
-
VBSで変数の宣言はできないので...
-
VBAのコードがエラーになっ...
-
実行時エラー -'-2147417848
-
ADODB.Streamを使用してUTF-8を...
-
EXCEL/VBAで、自分のPCだけエラ...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
VB6+SQL サーバー 2000 で 実行...
おすすめ情報
以下に変更して実行したら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
の部分が黄色くなります。。