DOBON.NETプログラミング道掲示板

No35487 の記事


■35487 / )  vb.netでのExcelファイルそうさ
□投稿者/ 独学学生 一般人(1回)-(2023/08/18(Fri) 19:37:57)
  • アイコン環境/言語:[Windows10] 
    分類:[.NET] 

    vb.netで下記プログラムを実行するとバックグラウンドプロセスにタスクが必ず残ってしまいます。
    フォームアプリを終了するとプロセスが消えるのですがバックグラウンドプロセスに残らない方法はありますか?

    private sub btn作成_Click(sender as object,e as eventargs)handles btn作成.click
    If txtpath.text =“” then
    exit sub
    end if

    btn作成.enabled =false

    dim str as string =“”
    dim strcount =0

    dim ex as new
    Microsoft.office.interop.Excel.application
    dim sh as Microsoft.office.interop.Excel.worksheet
    dim wb as Microsoft.office.interop.Excel.workbook
    dim range as Microsoft.office.interop.Excel.range

    For rw as integer =0 to dgv.rowcount -1
    if dgv.rows(rw).cells(“選択”).value=1 then
    str=dgv.row(rw).cells(“品名”).value & vbcrlf
    str &= dgv.row(rw).cells(“数量”).value & vbcrlf
    str &= dgv.row(rw).cells(“単位”).value & vbcrlf

    if strcount =0 then
    wb=ex.workbooks.open (txtpath.text)
    sh=ex.worksheets(“発注”)

    dim strarry() as string =str.split({environment.newline},stringsplitoptions.none)
    dim arrycount =0

    range = sh.range(“B” & 5 + strcount & “:I” & 5 + strcount)

    for col as integer =1 to range.columns.count
    range.cells(1,col).value =strarry(arrycount)
    system.runtime.InteropService.Marshal.release comobject(range.cells(1,col))
    arrycount =arrycount + 1
    next

    strcount =strcount + 1

    end if
    next

    wb.save()
    we.close(false)
    ex.quit()

    system.runtime.InteropService.Marshal.release comobject(range)
    system.runtime.InteropService.Marshal.release comobject(sh)
    system.runtime.InteropService.Marshal.release comobject(wb)
    system.runtime.InteropService.Marshal.release comobject(ex)

    Range=nothing
    Sh=nothing
    Wb=nothing
    Ex=nothing

    gc .Collect()
    gc.waitforpendingfinalizers()

    btn作成.enabled =true

    Msgbox(“作業完了”)
    end sub

違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -