前提・実現したいこと
基データを別シートに反映させて並べ替えと文字の置き換えを行うマクロを組んだのですが、
同じシートで作業しているのに何人かのPCではマクロが正常に動かずエラーが出てしまいます。
反映の別シートにマクロボタン設置
VBAは全くの初心者で分かりづらいかと思いますが、ご教示お願いいたします。
発生している問題・エラーメッセージ
実行時エラー´-2147417848(80010108)
オートメーションエラーです。
起動されたオブジェクトはクライアントから切断されました。
該当のソースコード
Application.ScreenUpdating = False Range("A2:G2").Select Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Rows("7:7").Select Application.CutCopyMode = False Selection.Copy Rows("8:797").Select ActiveSheet.Paste Range("B7").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.Replace What:="delete", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Columns("V:V").Select Application.CutCopyMode = False Selection.Insert Shift:=xlToRight Range("V7").Select ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""",""F"",RC[-1])" Range("V7").Select Selection.AutoFill Destination:=Range("V7:V797"), Type:=xlFillDefault Range("V7:V797").Select Rows("7:7").Select Range(Selection, Selection.End(xlDown)).Select ActiveWorkbook.Worksheets("【F】").Sort.SortFields.Clear ActiveWorkbook.Worksheets("【F】").Sort.SortFields.Add Key:=Range("N7:N797"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("【F】").Sort.SortFields.Add Key:=Range("V7:V797"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("【F】").Sort.SortFields.Add Key:=Range("J7:J797"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("【F】").Sort.SortFields.Add Key:=Range("L7:L797"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("【F】").Sort.SortFields.Add Key:=Range("F7:F797"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("【F】").Sort .SetRange Range("A7:HN797") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Application.ScreenUpdating = False ActiveSheet.Range("$A$6:$HK$797").AutoFilter Field:=14, Criteria1:="ヨコ" ActiveWorkbook.Worksheets("【F】").Sort.SortFields.Clear ActiveWorkbook.Worksheets("【F】").Sort.SortFields.Add Key:=Range("N7:N797"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("【F】").Sort.SortFields.Add Key:=Range("V7:V797"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("【F】").Sort.SortFields.Add Key:=Range("L7:L797"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("【F】").Sort.SortFields.Add Key:=Range("J7:J797"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("【F】").Sort.SortFields.Add Key:=Range("F7:F797"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("【F】").Sort .SetRange Range("A144:HN797") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Application.ScreenUpdating = False ActiveSheet.ShowAllData Columns("V:V").Select Selection.Delete Shift:=xlToLeft Range("B3:B6").Select Selection.Replace What:="部受付", Replacement:="済", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace What:="事前", Replacement:="前", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace What:="事後", Replacement:="後", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace What:="いる", Replacement:="有", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace What:="いない", Replacement:="無", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("K7").Select
試したこと
・アドイン設定確認→分析ツールのみチェック→同じように設定したところエラー出ていた数名のうち1人だけ問題解決
・新しいブックに作り直して、同じマクロを入れる→4回動作確認成功したが、その後はエラーが出て使用できず。(エラーが出ないで途中で動作が止まってしまう不具合も発生)
補足情報(FW/ツールのバージョンなど)
Excel2016
コードはマークダウンのcode機能を利用してご提示ください
このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
エラーはどのセンテンスで発生するのですか?
大体、
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
でエラーになっています。
シート名だけ【F】にしてセルに何も入力しない分には処理は通りますね。
使っている人全員で発生しているわけではないこと。
オートメーションエラーという点で処理自体が不正なわけではなくて負荷等の問題だと思うんですが。
完全に記録したマクロを編集して作ったようなソースなので効率よく書き直せというのも厳しそうな気がします。
その
Selection.PasteSpecial Paste~
のところですが、その処理が出ている部分二つとも
Selection.Copy
Selection.PasteSpecial Paste~
とコピーから貼り付け処理の間に、別のセルをSelectする処理を入れていないので、
同じ選択範囲で「コピー→形式を選択して貼り付ける」の動作をやっていることになります。
この部分いらない気がするのですが、一体何をやっている処理なのでしょうか。
マクロはやり始めたばかりで、マクロを記録するから大体の動きを入れてから行数などを修正するやり方しか出来ず…勉強不足で申し訳ございません。
一番初めの
Range("A2:G2").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
は、セル内に作成日時を記録するために
=TEXT(FLOOR(NOW(),"0:30:0"),"yyyy/mm/dd/h:mm")
の関数が入っています。
作成日時が進まないようにこのセルをコピーしてそのまま値貼り付けをしています。
理解しました。
数式を値で上書きしてるってことですね。
回答3件
あなたの回答
tips
プレビュー