• 締切済み

実行時エラー1004が出たり出なかったりします

マクロ初心者です。 エクセルへ入力したものを別のエクセルへ入力するマクロを作り、 何人かへメールで送信しました。(OutLook) 私自身が動作確認すると、きちんとマクロが動くのですが、 メールを受取って保存した人は、なぜか実行時エラー1004が 出る人・出ないで動く人…と色々でした。 (保存時にエクセルの名前などは変更していません) ちなみに、マクロのセキュリティレベルを下げただけで きちんと動くようになった人もいるので、コード記述以外の 原因(設定的なもの?)なのかもしれないのですが、 一体どうすれば全員エラーが出ないようになるのかサッパリわからず 苦慮しております。 なお、コードは以下のようになっています。 Sub 集計表入力() Dim a As String ←以下、同様の変数宣言が20コぐらい a = Range("T3").Value ←これもT4,T5,T6…と変数の数だけ続きます Workbooks("集計.xls").Activate Worksheets("DATA").Range("A65536")_ .End(xlUp).Offset(1).Select Dim zz As Integer zz = ActiveCell.Row Cells(zz,1).Value = a ←以下(zz,2)(zz,3)…と続きます ActiveWorkbllk.Save End Sub 上記は標準モジュールに記述、コマンドボタンにマクロを登録して ボタンを押すと「集計」というエクセルに入力できるように なっているのですが…。同じマクロが動いたり動かなかったり するんでしょうか? とっても困ってます。アドバイス宜しくお願いいたします。m(_ _)m

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

Worksheets("DATA").Range("A65536")_ .End(xlUp).Offset(1).Select この行が、匂いますね Worksheets("DATA").Select Range("A65536").End(xlUp).Offset(1).Select と、してみて 自信ないけど

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

No1です。 残念ながら、最初の質問に対する補足がなされていないようですね。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

どのコードでエラーが出ているのでしょう? この中に原因があるのは確実なのでしょうか? 集計.xlsを開いていないから Workbooks("集計.xls").Activate でエラーになるとか ActiveWorkbllk.Save でエラーになるとか(こちらは確実になりそう)

ryuryu-ryuryu
質問者

補足

お世話になります。 ActiveWorkbllkSave → ActiveWorkbookSaveです。 すみません。投稿時の入力ミスです。 エラーは「Rangメソッドが~」というもので、 入力先を選択する際のもののようです。 ちゃんと「集計」エクセルも立ち上げてもらってます。 しかも、再度そのエラーの出るエクセルをメール送信してもらうと こちらではきちんとマクロが動きます。 なぜだか分かりません…。 宜しくお願いいたします。

関連するQ&A

  • エクセルVBAで実行時エラー 91 が出ます

    エクセル2000です 各部署の棚卸を纏める為のVBAを作成しているのですが、実行時にエラーになってしまいます エラーメッセージは 「実行時エラー 91   オブジェクト変数またはWithブロック変数が設定されていません」 です ご教授お願いいたします Sub 棚卸() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("在庫集計票") Set sh2 = Worksheets("棚卸表") x = sh2.Range("A65536").End(xlUp).Row Z = sh1.Range("d2").Value ’部署番号 sh1.Range(Cells(5, Z), Cells(3000, Z)).ClearContents For i = 2 To x y = sh1.Range("A2:A" & Range("A2").End(xlDown).Row). _ Find(sh2.Cells(i, "a")).Row ’ここでエラーが発生します sh1.Cells(y, Z) = sh2.Cells(i, "c") Next i End Sub

  • Excel VBA 実行時エラー'1004':

     どちらの処理がより高速であるのかを調べるため、以下の2つのVBAを試作致しました。 Sub Macroコピペ乱数() 'コピペ乱数 Sheets("Sheet4").Select Range("A1:A99999").Formula = "=RAND()" Columns("A").Value = Columns("A").Value Range("B1").Select End Sub 及び Sub Macro繰り返し乱数() '繰り返し乱数 Dim i As Long Randomize Sheets("Sheet4").Select For i = 1 To 99999 Range("A" & i).Value = Rnd Next i Range("B1").Select End Sub  処が、これらのVBAを実際に動作させ様としますと、どちらの場合においても「Microsoft Visual Basic」ダイアログボックスが開いて 「実行時エラー'1004': 'Range'メソッドは失敗しました:'_Global'オブジェクト」 と表示されてしまいます。  さりとて、 Sub Macroコピペ乱数() 'コピペ乱数 Sheets("Sheet4").Select ActiveSheet.Range("A1:A99999").Formula = "=RAND()" Columns("A").Value = Columns("A").Value Range("B1").Select End Sub 及び Sub Macro繰り返し乱数() '繰り返し乱数 Dim i As Long Randomize Sheets("Sheet4").Select For i = 1 To 99999 Range("A" & i).Value = Rnd Next i Range("B1").Select End Sub 或いは Sub Macro繰り返し乱数() '繰り返し乱数 Dim i As Long Randomize Sheets("Sheet4").Select For i = 1 To 99999 Range(Cells(i, 1)).Value = Rnd Next i Range("B1").Select End Sub 等としましても、今度は 「実行時エラー'1004': アプリケーション定義またはオブジェクト定義のエラーです。」 となってしまいます。  どの部分がどの様に悪いのでしょうか?  そして、どの様に修正すれば良いのでしょうか?  尚、使用しておりますExcelのバージョンはExcel2010です。

  • 実行時エラー1004 オートフィルができない

    エクセルなのですが、A列の文字にたいする数式をB列に入れて最終行までオートフィルするマクロを作りたいのですが実行時エラー1004が発生してしまいます。 Sub macro1() Dim LastRow As Long LastRow = Range("A65536").End(xlUp).Row Range("B1").Value = "=LEN(A1)" Range(Range("B1"), Selection).AutoFill Destination:=Range("B1:B" & LastRow) End Sub このコードです。 Range(Range("B1"), Selection). ここら辺が怪しいかなと思ってるのですが、どうすればいいでしょうか? オートフィルを使わずにfor~nextでやる方法も知ってますが、オートフィルでやる方法をご教授いただきたいです。 よろしくお願いします。

  • エクセルVBAなぜ実行時エラーが?

    エクセル2000です。 DATAと名づけた表の値を変換し、最大値から端数をプラマイするマクロなのですが、途中で「実行時エラー91 オブジェクト変数またはWithブロック変数が設定されていません。」となってしまいます。 なぜ出るかわからないので別なBookに同じ名前のRange をつくり同様の表でためしたらエラーにならずちゃんと作動します。 本番用のBookでのみエラーがでます。なぜなのでしょうか? 実行時エラーのでる With Range("DATA").Find(mx, LookIn:=xlValues) .Value = .Value + dff ' End With を、Withブロックをつかわず Range("DATA").Find(mx, LookIn:=xlValues).Select で試しても本番のBookではエラーになります。ほんとに困っています。 Sub 調整() Dim r As Double Dim c As Range Dim dff As Integer, mx As Long r = 25000 / Range("初期").Value With Sheets("内訳") Range("DATA").Value = .Range("F57:L73").Value '初期値複写 'MsgBox "初期値転写完了" For Each c In Range("DATA") If c.Value <> "" Then c.Value = Application.WorksheetFunction.Round(c.Value * r, -1) End If Next 'MsgBox "初期変換完了" dff = 25000 - Range("変換後") If dff <> 0 Then 'MsgBox dff mx = Application.WorksheetFunction.Max(Range("DATA")) 'MsgBox mx With Range("DATA").Find(mx, LookIn:=xlValues) .Value = .Value + dff 'ここで実行時エラー! End With End If End With End Sub

  • 実行時エラー 1004について 【超初心者です】

    マクロ超初心者です。 WindowsXP Excel 2003です。 データ入力用にマクロを作成してみましたが、 「実行時エラー 1004 アプリケーション定義・・・・」というメッセージが出てきます。 シート1「入力」を入力用画面として、 シート2「データ」にシート1で入力した内容が反映されるものです。 シート1「入力」の入力用画面はセルの結合が多く、 入力するセル以外はシートの保護をかけています。 下記のようなマクロです。 Sub 登録() ActiveSheet.Unprotect Password:="×××" 最終行 = Sheets("データ").Range("A" & Rows.Count).End(xlUp).Row + 1 Sheets("データ").Range("A" & 最終行).Value = 最終行 Sheets("データ").Range("B" & 最終行).Value = Range("C2:D2").Value Sheets("データ").Range("C" & 最終行).Value = Range("C3").Value Sheets("データ").Range("D" & 最終行).Value = Range("E3").Value          Sheets("データ").Range("C2:D2").ClearContents Sheets("データ").Range("C3, E3").ClearContents MsgBox "登録しました" ActiveSheet.Protect Password:="×××", DrawingObjects:=True, contents:=True, UserInterfaceOnly:=True End Sub   超初心者で、何をどうしたらいいのかまったくわかりません。   なるべく専門用語がないように   ご指導いただくとありがたいです。   非常に困っておりますので、よろしくお願いします。   

  • 図形の移動をセンチの数値でマクロを実行したい

    エクセル初心者です。 以下のマクロを教えて頂きました。 セルに入力する数値は他の計算式から数値を割り出しています。 このマクロをセンチで入力して、実行する事は可能でしょうか。 その方法がありましたら、教えてください。 Private Sub Worksheet_Change(ByVal Target As Range) With ActiveSheet.Shapes.Range(Array("Group 1")) .Top = 100 .Left = 100 .Height = ActiveSheet.Range("A2").Value .Width = ActiveSheet.Range("A3").Value End With End Sub よろしくお願いします。

  • 実行エラー'424' ????

    エクセルでユーザーフォームを作成しました。 (オブジェクト名) UserForm7 です。 これを 開くマクロは Sub 受入フォームの表示() UserForm7.Show End Sub です。 すると 実行エラー'424' オブジェクトが必要です。と デバックします。 ちなみにUserForm1も作成してあり マクロは Sub 仕入先マスタ表示() Dim mytbl As Range Set mytbl = Worksheets("T_仕入先").Range("仕入先リスト1") UserForm1.Caption = "仕入先選択" UserForm1.Label1.Caption = "■仕入先一覧■" With UserForm1.ListBox1 .ColumnCount = mytbl.Columns.Count .ColumnWidths = "2cm;3cm" .List = mytbl.Value End With UserForm1.Show   End sub は問題なくフォームが表示します。 どこがわるいのでしょうか?

  • 実行時エラー1004発生する

    office2016 下記でsample1は実行されますが、条件の中身を変数にしたsample2は、実行時エラー1004になります。 Sub sample1() Dim BUSHO As String Sheets("Sheet2").Select BUSHO = Worksheets("MASTER").Range("AI2") '判定 Range("F1:F" & Range("B" & Rows.Count).End(xlUp).row).Value = "=IF(AND(RC[-2]<>""mecha"",RC[-1]<>""mecha""),""削除"","""")" End Sub sample1で動作するのを確認してsample2の変数版を作成しています。 なのでsample1ではBUSHO不使用です。 Sub sample2() Dim BUSHO As String Sheets("Sheet2").Select BUSHO = Worksheets("MASTER").Range("AI2") '判定 Range("F1:F" & Range("B" & Rows.Count).End(xlUp).row).Value = "=IF(AND(RC[-2]<>" & BUSHO & ",RC[-1]<>" & BUSHO & "),""削除"","""")" End Sub デバッグモードでBUSHOは”mecha"と表示されるのですが、何がおかしいのでしょう?

  • Rangeなどを変数でエラー

    Excel VBAについて。 以下のコードで「オブジェクトは、このプロパティまたはメソッドをサポートしていません」 エラーが発生します。原因は何でしょうか? Sub A() Dim stest Set stest = Worksheets("TEST") Dim ra Set ra = Range("C2") stest.ra.Value = Sheets("Sheet1").Cells(i, 2).Value ★ End Sub ★をSheets("TEST"). Range("C2").Value =略 のように、変数を使わずに記述するとエラーになりません。

  • Visual Basic Editorの実行時エラーのことについて教えてください。 

    Visual Basic超初心者ですがよろしくお願いします。 標準モジュールで入力したものを実行すると、必ず「実行時エラー "53": ファイルが見つかりません。」と表示してしまいます。 入力したものはミスはないと思うのですが、何回やってもエラーが出てしまいます。 わかる方いましたら教えてください。 入力したものを一応載せときます↓ Sub list_file() Dim numfile As Long Dim i As Long With Application.FileSearch .NewSearch .LookIn = Range("b1").Value .Filename = Range("b2").Value .SearchSubFolders = Range("b3").Value If .Execute() > 0 Then file_count = .FoundFiles.Count MsgBox file_count & "files exis" Worksheets.Add after:=Worksheets("sheet1") Range("a1").Value = "filename" Range("b1").Value = "date" Range("c1").Value = "size" For i = 1 To file_count Cells(i + 1, 1).Value = .FoundFiles(i) Cells(i + 1, 2).Value = FileDateTime(.FoundFiles(i)) Cells(i + 1, 3).Value = FileLen(.FoundFiles(i)) Cells(i + 1, 2).Value = Hex(Cells(i + 1, 3).Value) Next Columns("a:c").AutoFit Else MsgBox "no file exists" End If End With End Sub

専門家に質問してみよう