2016-04-03 14 views
1

この単純なコードを使用して、ブック1からブック2を同じフォルダにコピーします。他のブックにデータをコピーするときにVBA Excelが応答しない

Sub Button27_Click() 
    Application.ScreenUpdating = False 
    Dim FileName As String 
    Workbooks.Open FileName:=ActiveWorkbook.Path & "\sefaresh.xlsm" 
    Application.Wait (Now + TimeValue("0:00:01")) 
    ThisWorkbook.Sheets("Sheet3").Copy 
    After:=Workbooks("sefaresh.xlsm").Sheets(Sheets.Count) 
    Application.ScreenUpdating = True 
End Sub 

コピー&ペースト機能プロセスに成功したが、私は最初のワークブック2を閉じた場合、私はExcelの応答がありませんます。なにか提案を?

おかげ

+0

は、あなたのサブの末尾に 'DoEvents'を試してみてください。 –

+0

以前は使用していましたが、動作しません –

+0

workbook2が破損している場合は試してください:新しい名前に名前を変更し、すべてのコードを含むすべての内容を新しいブックにコピーし、新しいwbをworkbook2の古い名前として保存してからマクロをもう一度試してください。 –

答えて

0

は(テストされていない)、これを試してみてください。あなたは今エラーを出すべきではありません。あなたがオブジェクトで作業する場合

物事は簡単になっ:)

Sub Button27_Click() 
    Dim wbThis As Workbook, wbThat As Workbook 
    Dim ws As Worksheet 
    Dim fName As String 

    On Error GoTo Whoa 

    Set wbThis = ThisWorkbook 
    Set ws = wbThis.Sheets("Sheet3") 

    fName = wbThis.Path & "\sefaresh.xlsm" 

    Application.ScreenUpdating = False 

    Set wbThat = Workbooks.Open(fName) 

    DoEvents 

    ws.Copy After:=wbThat.Sheets(wbThat.Sheets.Count) 

    '~~> close and save the workbook 
    wbThat.Close (True) 

    DoEvents '<~~ Give time for it to save and close 

LetsContinue: 
    Application.ScreenUpdating = True 
    MsgBox "Done" 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 
+0

私はこれを行うが、同じ問題です。私はDONEメッセージを受け取りましたが、それ以降はワークブック2をicloseすると応答しませんでした。 –

+0

あなたのブック2が壊れているようです。このファイルから新しいファイルにデータをコピーすることによって、そのファイルの新しいコピーを作成できますか?ファイルを直接コピーしてコピーを作成しないでください。 –

+0

新しいワークブック2が再び動作しません。 –