次の方法で共有

VBAマクロにて、1ファイル目の行をDELETE後、次のファイルがopenできずに固まる

Anonymous
2017-05-11T03:04:50+00:00

下記のEXCEL VBA(変数名などの設定部分は省略)にて、

ループ1回目は正常にファイルが更新されますが、

2回目のWorkbooks.Openで固まってしまい、タスクマネージャでEXCELをkillする状況となります。

②処理部分をコメントとして、①処理部分のみとすれば、全ループ正常に実行できます。

①と②の差異は、削除する列が多くなるだけです。

1stepずつ実行すると、

ループ1回目は、open時に下記のプロシジャに入りますが、

 Private Sub appevent_WorkbookOpen(ByVal Wb As Workbook)

ループ2回目は、open時に上記のプロシジャに入りず、固まります。

何がまずいのでしょうか?

対策方法を教えてください。

Sub aa()

...      

    For I = 5 To 100

        GID = 件数一覧.Range("A" & I).Value

        OutFileName = Left(InFileName, 15) & "_" & GID & ".xlsx"

        Workbooks.Open Filename:=DirName & OutFileName

①           

        Sheets("フォロー表").Select

        Set フォロー表 = Workbooks(OutFileName).Worksheets("フォロー表")

        ActiveSheet.Range("$A$2:$N$10000").AutoFilter Field:=6, Criteria1:="<>" & GID, Operator:=xlAnd

        フォロー表.Rows("3:3").Select

        フォロー表.Range(Selection, Selection.End(xlDown)).Select

        Selection.Delete Shift:=xlUp

        ActiveSheet.Range("$A$2:$N$10000").AutoFilter Field:=6

②         

        Sheets(QE).Select

        Set QE2 = Workbooks(OutFileName).Worksheets(QE)

        ActiveSheet.Range("$A$3:$GP$10000").AutoFilter Field:=22, Criteria1:="<>" & GID, Operator:=xlAnd

        QE2.Rows("4:4").Select

        QE2.Range(Selection, Selection.End(xlDown)).Select

        Selection.Delete Shift:=xlUp

        ActiveSheet.Range("$A$3:$GP$10000").AutoFilter Field:=22

        Workbooks(OutFileName).Close SaveChanges:=True

    Next I

End Sub

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

1 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2017-05-11T07:16:01+00:00

    対策方法を検討していて上記のVBAマクロに記載漏れ(③ファイルclose)がありました。

    訂正後

    Sub aa()

    ...      

        For I = 5 To 100

            GID = 件数一覧.Range("A" & I).Value

            OutFileName = Left(InFileName, 15) & "_" & GID & ".xlsx"

            Workbooks.Open Filename:=DirName & OutFileName

    ①           

            Sheets("フォロー表").Select

            Set フォロー表 = Workbooks(OutFileName).Worksheets("フォロー表")

            ActiveSheet.Range("$A$2:$N$10000").AutoFilter Field:=6, Criteria1:="<>" & GID, Operator:=xlAnd

            フォロー表.Rows("3:3").Select

            フォロー表.Range(Selection, Selection.End(xlDown)).Select

            Selection.Delete Shift:=xlUp

            ActiveSheet.Range("$A$2:$N$10000").AutoFilter Field:=6

    ②         

            Sheets(QE).Select

            Set QE2 = Workbooks(OutFileName).Worksheets(QE)

            ActiveSheet.Range("$A$3:$GP$10000").AutoFilter Field:=22, Criteria1:="<>" & GID, Operator:=xlAnd

            QE2.Rows("4:4").Select

            QE2.Range(Selection, Selection.End(xlDown)).Select

            Selection.Delete Shift:=xlUp

            ActiveSheet.Range("$A$3:$GP$10000").AutoFilter Field:=22

            Workbooks(OutFileName).Close SaveChanges:=True

       Workbooks(OutFileName).Close SaveChanges:=True

        Next I

    End Sub

    上記の③部分をコメントとすると、ファイル作成は連続実行できます。

    ファイル作成後、ファイルクローズをループの外出しにすると、処理できました。

    ただし、これを連続実行すると、途中でEXCELがABENDします。

    1STEP実行させると、処理可能です。

    不具合の原因が何で、どのような対策方法があるのか、ご教示ください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません