• 締切済み

マクロ実行時に必ずエラーが発生して困ってます

EXCEL2007を利用しています。 毎日何百行もある返品のデータがexcelで届くので、そのデータから特定のルールに該当するデータを抽出し別ファイルで保存して処理をしなければならず、最初はフィルタを使って作業していました。 その間少しずつマクロを勉強しながら以下のマクロを作りました。 そのマクロを実行時に必ずエラーが発生し、「送信する」「送信しない」のポップアップが出た後、EXCEL破損のエラーが発生します。 細かいエラーの内容は失念してしまいました。 作業は終了していて、別ファイルもきちんと希望通りの名前で作成されるのですが、 毎回excelの修復が走って時間がかかり困っています。 作業としては以下の通りです。 sheet1にマクロを登録したボタンを作成しています。 sheet2のC2セルにはデータ貼り付けを行なっています。 関数でB列に特定のルールに該当するデータのみ連番が入るようにしています。 そのデータをsheet3(「返品」という名前)にvlookupで移動しています。 空欄の行も移動するため、そのデータをマクロでフィルタをかけ、空欄を除く該当データのみを表示させてコピー、新規ファイルを立ち上げて貼り付けし、「返品データmmdd」という名前(mmddは前日日付)をつけて保存するまでのマクロを作っています。 ************************************************************************** Sub 返品()   Sheets("返品").Select   Rows("1:1").Select   Selection.AutoFilter   ActiveSheet.Range("$A$1:$B$1000").AutoFilter Field:=1, Criteria1:="<>"   Range("A1:B1001").Select   Selection.Copy   Workbooks.Add   ActiveSheet.Paste   ActiveWorkbook.SaveAs Filename:= _   "\\C\返品データ\ " & " 返品データ" & Format(Date - 1, "mm") & Format(Date - 1, "dd") & ".xls", FileFormat:= _   xlExcel8, CreateBackup:=False End Sub ************************************************************************** エラーが出ないようにするためにはどのようにすればよいのでしょうか。 色々とマクロを修正してみましたが、なにぶんマクロを勉強中のため修正できず煮詰まっています。 仕事で使っているため、至急修正が必要な状況に迫られています。 どうかご教示ください。 よろしくお願いいたします。

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

> 細かいエラーの内容は失念してしまいました。 こういう情報がカギを握ってるんですよ。 > 「送信する」「送信しない」のポップアップが出た後 どこで出ます? > ActiveWorkbook.SaveAs Filename:= _   "\\C\返品データ\ " & " 返品データ" & Format(Date - 1, "mm") & Format(Date - 1, "dd") & ".xls", FileFormat:= _   xlExcel8, CreateBackup:=False 返品データの左側、C の前に\\とありますが、なぜにUNCパス? ローカルディスクに吐き出してから、ネットワークドライブへMOVEなりCOPYなりしてはいかがでしょう?

mottekedorobou1
質問者

補足

失礼しました。 エラーの内容は以下の通りです。 「問題が発生したため、Microsoft Office Excel を終了します。 ご不便をおかけして申し訳ありません。」 「作業中の内容が失われたおそれがあります。」 発生するタイミングとしては、sheet1にある上記マクロを登録したボタンをクリックした後です。 希望のファイルは作成されているところから判断する限りでは、 ファイルを作成するまではマクロが実行できているのではと思います。 また、使用しているファイルはexcel2007ですが、吐き出すファイルはexcel2003出なければいけないため、xlExcel8,となっています。 ファイルの保存先ですが、複数名が様々な端末でマクロを実行する事になるため、ローカルに吐き出さず、ネットワークドライブへ直接吐き出そうと思った次第です。 この考えがおかしかったでしょうか。

  • goold-man
  • ベストアンサー率37% (8365/22183)
回答No.1

返品のデータファイルが2007以外のバージョンでは?

mottekedorobou1
質問者

補足

ご指摘の通り、吐き出したい返品のファイルは2003形式にしたく、xlExcel8,としました。 使用しているexcelは2007なのですが、ここがいけなかったのでしょうか。 作業の仕様上、作成されたファイルをネットワークで繋がっていない別端末にUSBで持って行って作業をするため、その端末がexcel2003でなければならず、止む無くこうしましたが、もしかするとここがエラーになっているのでしょうか。

関連するQ&A

  • マクロを実行するとフリーズしてしまう。

    マクロを実行するとフリーズしてしまいます。 パソコンが原因なのでしょうか? マクロは Sub 抽出() ' '「貼り付け」シートを'一度全てクリアする Sheets("貼り付け").Select Cells.Select Selection.Clear '「元」シートを選択 Sheets("元").Select 'フィルタかけなおし Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter '’抽出前「*」選択 Selection.AutoFilter Field:=1, Criteria1:="~*" '全て選択してコピー Cells.Select Application.CutCopyMode = False Selection.Copy '「元」を貼り付ける Sheets("貼り付け").Select Cells.Select ActiveSheet.Paste 'フォントを「9」 With Selection.Font .Size = 9 End With End Sub です。 パソコンのスペックは celeron&reg; cpu3.20GHz 3.19GHz 1GB RAM です。 最近VBAを覚え始めたばかりな者です。 仕事のデータではもっと複雑なマクロを実行していてもパソコンはなんともないので マクロに原因があるのではなくパソコンに原因があるのでしょうか? (上記のマクロを実行しているのは自宅のPCです) よろしくお願いします。

  • エクセル・マクロ シートの非表示でマクロのエラー

    エクセル勉強中です。 マクロの記憶でSheet2の元データの図と記入できるセルをSheet1の有効セルにコピペするマクロを作りました。 複数の方が使う予定なので元データのSheet2を非表示にしたところマクロがエラーになりました。 どうしたらよいでしょうか? また貼り付けをする時、微妙に元データのシートがちらちらと移ります。 こちらも合わせてご指導いただけましたら助かります。   よろしお願いします。 Sub b1ab1() ' ' b1ab1 Macro ' ' Sheets("Sheet2").Select Range("AK48:AP56").Select Selection.Copy Sheets("ダクト制作単品図").Select ActiveSheet.Paste End Sub

  • エクセルのシートをコピーしたら、マクロが・・・

    こんにちは。 小さい図書室の運営をしている者です。 前回、こちらに質問を投稿したところ、とても役立つアドバイスを頂き、すぐに解決したので、今回も質問させていただきます。 今、図書の管理をすべてPCで行っています。 エクセルの「貸出管理」と言うブックで図書の貸出管理を行っています。 フィルタを使って図書の検索をした後、次に図書データを入力すべきセルにボタン一つで戻れるようにマクロを登録してあります。 このマクロを同じブック内の他のシートにコピーして使いたいのですが、コピーするとシートのテーブル名が変わってしまうためマクロでエラーが出てしまいます。 同じブック内の複数のシートでこのマクロを使う場合、いちいちシート名を変えなければならないのでしょうか?? もしくは、シートそれぞれに違うマクロを登録しなければならないのでしょうか?? ちなみに、登録されているマクロは次の通りです。 Sub 戻り() ' ' 戻り Macro ' ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=12 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=10 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=9 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=7 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=6 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=4 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=3 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=2 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=1 Range("テーブル2[貸出日]").Select Selection.End(xlDown).Select Selection.Offset(1, 0).Select End Sub この説明で分かって頂けますでしょうか?! どうか御回答お願いいたします!!

  • エクセル・マクロ CSVファイルの読込方法と改行

    マクロがうまく作成出来ずにいます。 是非、教えて頂けないでしょうか、宜しくお願い致します。 マクロでやりたい事は二つあります。 (1)あるシステムよりRドライブ内にデータを落とし、その後エクセルシートへ貼り付ける作業を行っているのですが、この作業をマクロで出来るようにしたいです。 ただ、データを落とした段階では拡張子表示にしても何もついていないデータになっていますが、中身からしておそらくCSV形式のデータだと思います。 (2)シート(1)、(2)、(3)にあるデータをシート(4)に順番に貼り付けていきたいのですが、(1)のシートのデータと(2)の間に空白の行を一行、(2)と(3)の間にも空白の行を一行としていきたいのです。 (2)に関しては途中までマクロを書いたのですが、エラーが出てうまくいきません。 作成したマクロは以下です。 Sheets("summary").Activate Range("A3").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.ClearContents 'AUD シート Sheets("AUD").Activate ActiveSheet.Range("A1").Select ActiveSheet.Range("A1:P1").Select ActiveSheet.Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("summary").Activate ActiveSheet.Range("A3").Select ActiveSheet.Paste With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With Application.CutCopyMode = False ActiveCell.Select ActiveSheet.Range(Selection.End(xlDown)).Select Cells.Replace What:=Chr(10), Replacement:="<br>" 最後の数行でエラーが出ます。 マクロの初心者でこんな事もわからないのかと思われるかもしれませんが、 どうぞ宜しくお願い致します。

  • サッカーもいいけどマクロもねっ

    多分わかる人には簡単な内容だと思いますが・・ Rows("1:1").Select Range("D1").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet2!R1C1:R1200C2,2,FALSE)" Range("D1").Select Selection.Copy Application.Goto Reference:="R2C4:R65000C4" ActiveSheet.Paste Application.CutCopyMode = False Cells.Select Range("A2").Activate Selection.AutoFilter Selection.AutoFilter Field:=4, Criteria1:="0" End Sub これは「Sheet1にデーター」を入れ 「Sheet2のA列」に調べたい項目を打ち込み Sheet1でマクロの実行をし Sheet1の上の方に調べてる項目が出てくるマクロです 質問は「Sheet2のA列」に調べる項目を打ち込むのではなく 「Sheet2のB列」打ち込みを変更したいのです どこを変えれば良いのでしょうか? 又、A列には「ABC123」と打っているのですが「abc123」の様に小文字にも対応出来る方法はありますか?

  • エクセルのマクロ実行→オブジェクトがはみでるエラーについて

    エクセルでマクロを作り、実行したのですが、データを集計し「2」で集約する部分で「オブジェクトからはみでます」というエラーがでます。原因がわかりません。正しく実行できる方法を教えてください。 Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(3, 4, 5, 6, _ 7, 8, 10, 13), Replace:=True, PageBreaks:=False, SummaryBelowData:=False Range("D2").Select   ↓この部分でエラーになります。 ActiveSheet.Outline.ShowLevels RowLevels:=2 Range("A2").Select Selection.Insert Shift:=xlDown Range("P2:R2").Select Selection.Insert Shift:=xlDown Range("B1").Select Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy

  • 実行時エラー”1004” 初心者です

    Excel_2000のVBAです。 sheet1のコマンドボタンを押すと"明細”というシートのデータが入っている範囲を選択するようにしたいのですが、ActiveSheet.Range(Cells(4, 3), Cell(OwariGyo, 8)).Selectのところで実行時エラー"1004"が出ます。 ヘルプを見ても、よく理解できませんでした。 解決方法をご教示ください。 Worksheets("明細").Select ActiveSheet.Range("C4").Select Selection.End(xlDown).Activate OwariGyo = ActiveCell.Row ActiveSheet.Range(Cells(4, 3), Cell(OwariGyo, 8)).Select End Sub

  • マクロ実行時にエラーが出てしまいます

    マクロを記録し、それを実行しようとしたのですが、途中で下記のようなエラーが出てしまいます。 実行時エラー '1004': PivotTableクラスのPivotFieldsプロパティを取得できません。 黄色い矢印がとまっているのは下記の箇所です。 →With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("送付先")← 自分なりに調べてみたのですが、選択範囲("E2:E1288"等の箇所)が違うデータでマクロを実行するとエラーになるのだと思っているのですが、選択範囲が毎回変わるのに対応できるコードの変更の仕方が分かりません。 もしよろしければ、アドバイスを頂けませんでしょうか。 コードの全体は下記になります。 Sheets("本体").Select Range("E1").Select ActiveCell.FormulaR1C1 = "品目分け" Range("E2").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-2],1)" Range("E2").Select Selection.AutoFill Destination:=Range("E2:E1288") Range("E2:E1288").Select Sheets("計算結果").Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,SourceData:= _ "本体!C1:C5").CreatePivotTable TableDestination:="[計算用.xls]計算結果!R3C1", _ TableName:="ピボットテーブル", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTables("ピボットテーブル").ColumnGrand = False With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("送付先") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("品目分け") .Orientation = xlColumnField .Position = 1 End With Range("E4").Select ActiveSheet.PivotTables("ピボットテーブル").AddDataField ActiveSheet.PivotTables( _"ピボットテーブル").PivotFields("数量"), "データの個数 / 数量", xlCount ActiveSheet.PivotTables("ピボットテーブル").PivotFields("データの個数/ 数量").Function = _xlSum With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("品目分け") .PivotItems("(空白)").Visible = False End With Range("A1").Select End Sub

  • マクロ実行時にエラーが出てしまいます

    マクロを記録し、それを実行しようとしたのですが、途中で下記のようなエラーが出てしまいます。 実行時エラー '1004': PivotTableクラスのPivotFieldsプロパティを取得できません。 黄色い矢印がとまっているのは下記の箇所です。 →With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("送付先")← 自分なりに調べてみたのですが、選択範囲("E2:E1288"等の箇所)が違うデータでマクロを実行するとエラーになるのだと思っているのですが、選択範囲が毎回変わるのに対応できるコードの変更の仕方が分かりません。 もしよろしければ、アドバイスを頂けませんでしょうか。 コードの全体は下記になります。 Sheets("本体").Select Range("E1").Select ActiveCell.FormulaR1C1 = "品目分け" Range("E2").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-2],1)" Range("E2").Select Selection.AutoFill Destination:=Range("E2:E1288") Range("E2:E1288").Select Sheets("計算結果").Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,SourceData:= _ "本体!C1:C5").CreatePivotTable TableDestination:="[計算用.xls]計算結果!R3C1", _ TableName:="ピボットテーブル", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTables("ピボットテーブル").ColumnGrand = False With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("送付先") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("品目分け") .Orientation = xlColumnField .Position = 1 End With Range("E4").Select ActiveSheet.PivotTables("ピボットテーブル").AddDataField ActiveSheet.PivotTables( _"ピボットテーブル").PivotFields("数量"), "データの個数 / 数量", xlCount ActiveSheet.PivotTables("ピボットテーブル").PivotFields("データの個数/ 数量").Function = _xlSum With ActiveSheet.PivotTables("ピボットテーブル").PivotFields("品目分け") .PivotItems("(空白)").Visible = False End With Range("A1").Select End Sub

  • マクロについて

    マクロ初心者です。 下記の操作をマクロで行いたいのですがうまくいかないのでどうすればうまくマクロが作動するのか教えて頂ければと思います。4の操作までは正しく作動しましたが5以降に困っています。。。 どなたかお願いしますmm (1) A列にフィルターをかけて[??????}を含むものを選択 (2). 1に.該当するもB列のDataを値のみ数値と値のClear (3) 2の後に再びA列で[??????]を含まないものを選択 (4)  3に該当するA列のDataを数値と値のClear (5)  4の操作で空白となったセルに=上のセルという計算式の指示を出す (6) すべて値貼り付けをし、空白のセルを削除する ※Dataの行数は毎回作業時に変更があります。 ※Dataは数値だけではなく文字列も含んでいます 失敗したマクロ--------------------------------------------- Range("A2").Select Selection.AutoFilter Field:=1, Criteria1:="=*[??????]*", Operator:=xlAnd Columns("B:B").Select Selection.ClearContents Selection.AutoFilter Field:=1, Criteria1:="<>*[??????]*", Operator:=xlAnd Columns("A:A").Select Selection.ClearContents For i = 3 To [A65536].End(xlUp).Row If Cells(i, "A") = "" Then Cells(i - 1, "A").Copy Cells(i, "A") Next i End Sub -----------------------------------------------------------

専門家に質問してみよう