none
VBよりEXCEL操作 RRS feed

  • 質問

  • お世話になります

    vb2008でexcelを操作したいと思っております

    2つのフォルダーがあり(CドライブにTXTとXLS)

    TXTの中にはtest.txtとタブ区切りで作成されたファイルがあります

    test.txtをXLSフォルダーにtest.xlsxとして作成し

    エクセルを開いた状態にしたいと考えております

    動作は実現できる事ができましたが、更なる問題があります

    ①フォームを閉じないとEXCEL.EXEがタスクマネージャーから消えません

    ②エクセルデータをSAVEした後にCドライブにTXTのtest.txtファイルを削除したいと思います

    ご回答よろしくお願いします

    Public Class Form1
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim xlApp As Object
            xlApp = CType(CreateObject("Excel.Application"), Object)
            With xlApp
                Dim txtDrName As String = "C:\TXT"
                Dim xlsDrName As String = "C:\XLS"
                Dim txtFiName As String = "\test.txt"
                Dim xlsFiName As String = "\test.xls"
                .Workbooks.OpenText(Filename:=txtDrName & txtFiName, TAB:=True)
                .Cells.Select()
                .Cells.EntireColumn.AutoFit()
                .Range("A1").Select()
    
                .Application.DisplayAlerts = False
                ChDir(xlsDrName)
                .ActiveWorkbook.SaveAs(Filename:=xlsDrName & xlsFiName, FileFormat:=56, CreateBackup:=False)
                .Application.DisplayAlerts = True
    
                .Application.Visible = True
    
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
                xlApp = Nothing
            End With
        End Sub
    End Class



    2013年1月10日 2:17

回答

  • System.Runtime.InteropServices.Marshal.ReleaseComObject メソッドを調べてみてください。

    関連トピックも上げておきます。

    http://social.msdn.microsoft.com/Forums/ja-JP/vbgeneralja/thread/eea6b862-e0fd-4cfb-a5d1-5be7c01ffa43

    http://social.msdn.microsoft.com/forums/ja-jp/csharpgeneralja/thread/0F210F52-3667-4E66-9DD6-4480EEDE48DE

    ReleaseComObject メソッドを使わずに GC に任せるべきという意見もあると思うのでその辺は自己判断で。

    • 回答としてマーク ジョウジ 2013年1月11日 5:25
    2013年1月10日 3:24

すべての返信

  • System.Runtime.InteropServices.Marshal.ReleaseComObject メソッドを調べてみてください。

    関連トピックも上げておきます。

    http://social.msdn.microsoft.com/Forums/ja-JP/vbgeneralja/thread/eea6b862-e0fd-4cfb-a5d1-5be7c01ffa43

    http://social.msdn.microsoft.com/forums/ja-jp/csharpgeneralja/thread/0F210F52-3667-4E66-9DD6-4480EEDE48DE

    ReleaseComObject メソッドを使わずに GC に任せるべきという意見もあると思うのでその辺は自己判断で。

    • 回答としてマーク ジョウジ 2013年1月11日 5:25
    2013年1月10日 3:24
  • galaco様ご回答ありがとうございます

    その後上記のサイトおよび、ネット等で調べました

    経験が浅いせいか、理解するまで大変苦労しております

    保存と削除を分離して考えましたら、思った動作が出来ました

    貴重な意見ありがとうございました。

    2013年1月11日 5:24