Excel 프로세스를 종료 할 수 없습니다.

Gutanoth

다음 코드를 사용하여 Excel 파일로 복사 및 붙여 넣기를 수행하고 있습니다.

Imports Excel = Microsoft.Office.Interop.Excel
Imports System.IO
Imports System.Runtime.InteropServices

Private Sub btnCombine_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCombine.Click

    Dim xlAppSource As New Excel.Application
    Dim xlAppTarget As New Excel.Application
    Dim xlWbSource As Excel.Workbook
    Dim xlWbTarget As Excel.Workbook
    Dim xlsheetSource As Excel.Worksheet
    Dim xlsheetTarget As Excel.Worksheet
    Dim xlRangeSource As Excel.Range
    Dim xlRangeTarget As Excel.Range

    Dim Progress As Integer = 0
    pbrProgress.Minimum = 0
    pbrProgress.Maximum = amountOfFiles

    btnCombine.Enabled = False
    btnSelect.Enabled = False
    pbrProgress.Visible = True

    getSaveLocation()
    MakeExcelFile()

    'loop through all excel files to get the required data
    For i = 0 To amountOfFiles - 1


        Dim CurrentFile As String = strFileNames(i)
        Dim IntAmountOfRows As Integer = amountOfRows(CurrentFile)
        Dim intStartOfEmptyRow As Integer = amountOfRows(SummaryLocation)

        xlAppSource.DisplayAlerts = False
        xlAppTarget.DisplayAlerts = False

        'Set current workbook
        xlWbSource = xlAppSource.Workbooks.Open(CurrentFile)
        xlWbTarget = xlAppTarget.Workbooks.Open(SummaryLocation)

        'set current worksheet
        xlsheetSource = xlWbSource.ActiveSheet
        xlsheetTarget = xlWbTarget.ActiveSheet

        'copy range of data from source to target file
        xlRangeSource = xlsheetSource.Range("A2:k" & IntAmountOfRows)
        xlRangeSource.Copy()

        xlRangeTarget = xlsheetTarget.Range("A" & intStartOfEmptyRow)
        xlRangeTarget.PasteSpecial(Excel.XlPasteType.xlPasteValues)

        'save summary file before closing
        xlsheetTarget.SaveAs(SummaryLocation)

        'updating progress bar
        Progress = Progress + 1
        pbrProgress.Value = Progress

    Next

    'close excel
    xlWbSource.Close(True)
    xlWbTarget.Close(True)
    xlAppSource.Quit()
    xlAppTarget.Quit()

    xlAppSource.DisplayAlerts = True
    xlAppTarget.DisplayAlerts = True


    'Cleanup
    Marshal.ReleaseComObject(xlAppSource)
    Marshal.ReleaseComObject(xlAppTarget)
    Marshal.ReleaseComObject(xlWbSource)
    Marshal.ReleaseComObject(xlWbTarget)
    Marshal.ReleaseComObject(xlsheetSource)
    Marshal.ReleaseComObject(xlsheettarget)
    Marshal.ReleaseComObject(xlRangeSource)
    Marshal.ReleaseComObject(xlRangeTarget)

    xlAppSource = Nothing
    xlAppTarget = Nothing
    xlWbSource = Nothing
    xlWbTarget = Nothing
    xlsheetSource = Nothing
    xlsheetTarget = Nothing
    xlRangeSource = Nothing
    xlRangeTarget = Nothing

    MsgBox("Samenvoegen compleet")

    init()

End Sub

나는 SO에 주어진 모든 솔루션을 시도했습니다.

  • 한 줄에 2 점을 사용하지 마십시오.
  • marshall.ReleaseComObject를 사용해 보았습니다.
  • 개체를 "아무것도"로 설정해 보았습니다.

그러나 응용 프로그램을 실행할 때마다 10-20 개의 Excel 프로세스가 계속 실행됩니다.

user2140173
Option Explicit

Sub Main()

    Dim xlApp As Excel.Application
    Set xlApp = New Excel.Application

    xlApp.Visible = False
    xlApp.DisplayAlerts = False

    Dim xlWb As Workbook
    Set xlWb = xlApp.Workbooks.Open("C:\...\path")

    Dim xlSht As Worksheet
    Set xlSht = xlWb.Sheets(1)

    xlSht.Range("A1") = "message from " & ThisWorkbook.FullName

    xlWb.Saved = True
    xlWb.Save
    xlWb.Close

    xlApp.Quit

End Sub

매번 나를 위해 작동하며 작업 관리자에 Excel 프로세스가 중단되지 않습니다.

참고 : 코드가 어느 시점에서 중단되고 이미 열려있는 개체를 제대로 처리하지 않으면 작업 관리자의 프로세스 탭에서 중단됩니다. 코드에서 오류 처리를 구현하지 않은 경우 여기에서 시작 하십시오 .

이것을 대안으로 생각하십시오

Option Explicit

Sub Main()

    On Error GoTo ErrHandler
    Dim xlApp As Excel.Application
    Set xlApp = New Excel.Application

    xlApp.Visible = False
    xlApp.DisplayAlerts = False

    Dim xlWb As Workbook
    Set xlWb = xlApp.Workbooks.Open("C:\...\path")

    Dim xlSht As Worksheet
    Set xlSht = xlWb.Sheets(1)

    xlSht.Range("A1") = "message from " & ThisWorkbook.FullName

    xlWb.Saved = True
    xlWb.Save
    xlWb.Close

    xlApp.Quit
    Exit Sub

ErrHandler:
    xlWb.Saved = True
    xlWb.Save
    xlWb.Close

    xlApp.Quit
End Sub

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP 데몬 프로세스를 종료 할 수 없습니다.

분류에서Dev

gunicorn 프로세스를 종료 할 수 없습니다.

분류에서Dev

C #에서 프로세스를 종료 할 수 없습니까?

분류에서Dev

Eclipse : Java 관점에서 프로세스를 종료 할 수 없습니다.

분류에서Dev

cygwin에서 Windows 프로세스를 종료 할 수 없습니다.

분류에서Dev

깨어 난 후 프로세스를 종료 할 수 없습니다.

분류에서Dev

13.04를 종료 할 수 없습니다.

분류에서Dev

13.04를 종료 할 수 없습니다.

분류에서Dev

Ubuntu를 종료 할 수 없습니다.

분류에서Dev

pkill은 상위 프로세스 ID가 1 인 프로세스를 종료 할 수 없습니다.

분류에서Dev

시작시 프로세스를 종료 할 수 있습니까?

분류에서Dev

너무 오래 실행되면 간헐적으로 프로세스를 종료 할 수 없습니다.

분류에서Dev

작업 관리자 또는 taskkill로 프로세스를 종료 할 수 없습니다.

분류에서Dev

Mac OS X-실행중인 프로세스를 종료 할 수 없습니다.

분류에서Dev

추가 함수는 for 루프를 종료 할 수 없습니다.

분류에서Dev

이 프로세스를 종료 할 수없는 이유는 무엇입니까?

분류에서Dev

NOHUP 프로세스를 종료 할 수없는 이유는 무엇입니까?

분류에서Dev

GLEW 함수를 호출 할 때 프로세스가 종료 코드 -1073741515로 완료되었습니다.

분류에서Dev

Java의 Selenium Grid : org.openqa.selenium.SessionNotCreatedException : 유효하지 않은 인수 : 종료 된 프로세스를 종료 할 수 없습니다.

분류에서Dev

프로그램을 종료 할 수 없습니다.

분류에서Dev

프로그램을 종료 할 수 없습니다.

분류에서Dev

응용 프로그램을 종료 할 수 없습니다.

분류에서Dev

Ruby Gems 용 번들 설치를 실행할 수 없습니다. 프로세스가 종료 코드 17로 완료되었습니다.

분류에서Dev

while 루프는 NSLog 없이는 종료 할 수 없습니다.

분류에서Dev

무한 루프를 종료 할 수 없습니다.

분류에서Dev

do while 루프를 종료 할 수 없습니다.

분류에서Dev

VB.NET-For / Next 루프를 종료 할 수 없습니다.

분류에서Dev

C ++의 while 루프를 종료 할 수 없습니다.

분류에서Dev

backtick 된 yes 프로세스를 어떻게 종료 할 수 있습니까?

Related 관련 기사

  1. 1

    PHP 데몬 프로세스를 종료 할 수 없습니다.

  2. 2

    gunicorn 프로세스를 종료 할 수 없습니다.

  3. 3

    C #에서 프로세스를 종료 할 수 없습니까?

  4. 4

    Eclipse : Java 관점에서 프로세스를 종료 할 수 없습니다.

  5. 5

    cygwin에서 Windows 프로세스를 종료 할 수 없습니다.

  6. 6

    깨어 난 후 프로세스를 종료 할 수 없습니다.

  7. 7

    13.04를 종료 할 수 없습니다.

  8. 8

    13.04를 종료 할 수 없습니다.

  9. 9

    Ubuntu를 종료 할 수 없습니다.

  10. 10

    pkill은 상위 프로세스 ID가 1 인 프로세스를 종료 할 수 없습니다.

  11. 11

    시작시 프로세스를 종료 할 수 있습니까?

  12. 12

    너무 오래 실행되면 간헐적으로 프로세스를 종료 할 수 없습니다.

  13. 13

    작업 관리자 또는 taskkill로 프로세스를 종료 할 수 없습니다.

  14. 14

    Mac OS X-실행중인 프로세스를 종료 할 수 없습니다.

  15. 15

    추가 함수는 for 루프를 종료 할 수 없습니다.

  16. 16

    이 프로세스를 종료 할 수없는 이유는 무엇입니까?

  17. 17

    NOHUP 프로세스를 종료 할 수없는 이유는 무엇입니까?

  18. 18

    GLEW 함수를 호출 할 때 프로세스가 종료 코드 -1073741515로 완료되었습니다.

  19. 19

    Java의 Selenium Grid : org.openqa.selenium.SessionNotCreatedException : 유효하지 않은 인수 : 종료 된 프로세스를 종료 할 수 없습니다.

  20. 20

    프로그램을 종료 할 수 없습니다.

  21. 21

    프로그램을 종료 할 수 없습니다.

  22. 22

    응용 프로그램을 종료 할 수 없습니다.

  23. 23

    Ruby Gems 용 번들 설치를 실행할 수 없습니다. 프로세스가 종료 코드 17로 완료되었습니다.

  24. 24

    while 루프는 NSLog 없이는 종료 할 수 없습니다.

  25. 25

    무한 루프를 종료 할 수 없습니다.

  26. 26

    do while 루프를 종료 할 수 없습니다.

  27. 27

    VB.NET-For / Next 루프를 종료 할 수 없습니다.

  28. 28

    C ++의 while 루프를 종료 할 수 없습니다.

  29. 29

    backtick 된 yes 프로세스를 어떻게 종료 할 수 있습니까?

뜨겁다태그

보관