
下記のエラーが出ます、似たようなもので新規ファイルで保存できたのですが
今回は出来ない状態になってしまいました。
ちょこちょこマクロ使うのですが、初心者で解決できません。
マクロ先生のご指導をお願いします。
※コピーされたシートが新ファイルで開かれた状態でエラー表示となります。
「実行時エラー '1004':
'SaveAs' メソッドは失敗しました: '_Worksheet' オブジェクト」
'指定額の抽出
Private Const MESSAGE_FINISH = "予算出力処理が完了しました"
Sub 予算データテキスト出力()
Dim ws1
Set ws1 = Worksheets("チェック一覧")
Dim m As Long
m = 3
Dim ws2
Set ws2 = Worksheets("予算データ")
Dim sm As String
Dim ws3
Dim sn
'チェック一覧シートのNo.が無くなるまで処理する
Do Until ws1.Cells(m, 1) = ""
Application.ScreenUpdating = False
If ws1.Cells(m, 4) = "" Then
'ナンバーがある場合は部門等をチェック一覧(ws1)→フォーム(ws2)に転記する
Else
ws2.Cells(2, 2) = ws1.Cells(m, 4)
'各部署のシート名をsmにセットする
sm = ws1.Cells(m, 2)
Set ws3 = Worksheets(sm)
'予算フォーム(ws2)の行変数「s」と各部署シート(ws3)の行変数「n」
Dim s
s = 4
Dim n
n = 9
Dim cnt
cnt = 1
Do Until n = 44
If ws3.Cells(n, 23) = 0 Then
'各数値等を各部署のシート(ws3)→フォーム(ws2)に転記する
Else
ws2.Cells(s, 1) = cnt
ws2.Cells(s, 3) = 6100
ws2.Cells(s, 4) = 0
ws2.Cells(s, 5) = ws3.Cells(3, 4)
ws2.Cells(s, 6) = ws3.Cells(5, 8)
ws2.Cells(s, 7) = ws3.Cells(n, 4)
ws2.Cells(s, 8) = ws3.Cells(n, 24)
ws2.Cells(s, 9) = ws3.Cells(n, 25)
ws2.Cells(s, 10) = ws3.Cells(n, 26)
ws2.Cells(s, 11) = ws3.Cells(n, 27)
ws2.Cells(s, 12) = ws3.Cells(n, 28)
ws2.Cells(s, 13) = ws3.Cells(n, 29)
ws2.Cells(s, 14) = ws3.Cells(n, 31)
ws2.Cells(s, 15) = ws3.Cells(n, 32)
ws2.Cells(s, 16) = ws3.Cells(n, 33)
ws2.Cells(s, 17) = ws3.Cells(n, 34)
ws2.Cells(s, 18) = ws3.Cells(n, 35)
ws2.Cells(s, 19) = ws3.Cells(n, 36)
s = s + 1
cnt = cnt + 1
End If
n = n + 1
Loop
'予算データに転記されたので出力する
ws2.Copy
' ↓↓↓↓↓この下の「SaveAs」がエラーになります。↓↓↓↓↓
ActiveWorkbook.SaveAs Filename:="D:\Library\Desktop\新しいフォルダー\" & ws2.Cells(s, 5).Value & ".txt", FileFormat:=xlText
ActiveWindow.Close
ActiveWorkbook.Close savechanges:=False
'フォームに転記した情報をクリア
ws2.Select
Range(Cells(4, 1), Cells(44, 19)).Select
Selection.ClearContents
End If
m = m + 1
Loop
ws1.Select
MsgBox MESSAGE_FINISH
End Sub

No.2ベストアンサー
- 回答日時:
No1の方が指摘されているように、
ActiveWorkbook.SaveAs Filename:="D:\Library\Desktop\新しいフォルダー\" & ws2.Cells(s, 5).Value & ".txt", FileFormat:=xlText
のときの、 ws2.Cells(s, 5).Valueの値が不正な可能性があります。
この行の直前で、
msgbox("<" & ws2.Cells(s, 5).Value & ">")
を行い、ws2.Cells(s, 5).Valueの内容を確認しては、いかがでしょうか。
ありがとうございます
ご指摘の通りmsgboxで中身を見たら「空っぽ」でした
なので下記のように変更したらエラーでなくなりました
こういうデバッグというかエラーつぶしの作業経験が少なく
msgboxを使うデバッグを思い出し、重要性に気づきました。
ありがとうございました。
<<変更後>>
ActiveWorkbook.SaveAs Filename:="D:\Library\Desktop\新しいフォルダー\" & ws3.Cells(4, 8).Value & ".txt", FileFormat:=xlText
No.1
- 回答日時:
ActiveWorkbook.SaveAs Filename:="D:\Library\Desktop\新しいフォルダー\" & _
ws2.Cells(s, 5).Value & ".txt", FileFormat:=xlText
ActiveWorkbook とは、ここでは、ws2.Copy で切り離されたシートのことだと思います。ファイル名として、ws2.Cells(s, 5).Value を一旦、変数に置き換えずに、そのまま、保存に使うのはちょっと無謀かなって思います。
s は、カウンター変数で、ループの最後、 s = s + 1 となって、どこでもない所かもしれません。定数なりで決める必要があります。
一度、ws2.Cells(s, 5).Value の中身を確認すべきでしょうね。
そして、ファイル名の付け方には、もう少し工夫が必要だと思います。
ありがとうございます
ご指摘の通り、無謀だったようです
別マクロで似たような感じで保存名で使った事があり
安心しきっていましたが、ws2の状態では空データの
ようで、それが原因でエラーになっていたようです。
変数にはしなかったのですがws3の情報を指定して
保存することが出来ました。
ありがとうございました。
<<変更後>>
ActiveWorkbook.SaveAs Filename:="D:\Library\Desktop\新しいフォルダー\" & ws3.Cells(4, 8).Value & ".txt", FileFormat:=xlText
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) セルS2に入力した「月」と一致したB列の右隣へセルS110の値を転記する下記マクロを実行するとエラー 2 2022/12/06 17:32
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
このQ&Aを見た人はこんなQ&Aも見ています
-
マクロの「SaveAs」でエラーが出るのを解消したいです
Visual Basic(VBA)
-
Worksheets メソッドは失敗しました。のエラー処理のやり方
Visual Basic(VBA)
-
Excel ファイルに保存すると実行時エラーになる
Visual Basic(VBA)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
7
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
8
エクセルマクロでエラーの原因がわかりません。
Visual Basic(VBA)
-
9
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
10
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
11
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
12
UserForm1.Showでエラーになります。
工学
-
13
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
14
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
15
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
16
エクセルVBAが途中で止まります
Visual Basic(VBA)
-
17
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
18
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
19
[Excel] ファイル名を変数指定して保存するマクロ
Excel(エクセル)
-
20
exeファイルの中身を見ることは可能ですか?
フリーソフト
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
エクセルのVBAコードと数式につ...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
【VBA】 結合セルに複数画像と...
-
vbsでのwebフォームへの入力制限?
-
算術演算子「¥」の意味について
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vb.net(vs2022)のtextboxのデザ...
-
ダブルクリックで貼り付けた画...
-
VBAの「To」という語句について
-
VBAでユーザーフォームを指定回...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】変数を使った、文字...
-
エクセルのVBAコードについて教...
-
ワードの図形にマクロを登録で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報