tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル エクセルへのテキストボックス描写方法
投稿日: 2015/04/25(Sat) 18:42
投稿者もとき
すみませんが、教えていただけないでしょうか?

VB2013 エクセル2013を使用しています。
エクセルへテキストボックスを複数個描写したいと思っています。
1つなら描写できますが、それ以上になるとエラーとなってしまいます。
また、エクセルの解放もできません。

始めたばかりで、いろいろなコードを参考させてもらいながら
作りましたが、エラーとなってしまいます。
よろしくお願いいたします。

Imports Microsoft.Office.Interop
Imports Microsoft.Office.Core
Imports System.Runtime.InteropServices

Public Class Form1
    Private Sub cmdOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOK.Click
        Dim FilePath As String
        FilePath = "D:\VB\excel1.xlsx"
        Dim xlApp As New Excel.Application
        Dim xlBooks As Excel.Workbooks
        Dim xlBook As Excel.Workbook
        Dim xlSheets As Excel.Sheets
        Dim xlSheet As Excel.Worksheet
        Dim xlShapes As Excel.Shapes
        Dim xlShape As Excel.Shape
        Dim xlTextBox As Excel.TextBox
        Dim TextBoxSu As Integer = 0
        Dim TextBoxColor As Integer = 0

        xlBooks = xlApp.Workbooks
        xlBook = xlBooks.Open(FilePath)
        xlSheets = xlBook.Worksheets
        xlSheet = CType(xlSheets("sheet1"), Excel.Worksheet)
        xlShapes = xlSheet.Shapes
         xlApp.Visible = False
        'Excelの警告メッセージを表示しない
        xlApp.DisplayAlerts = False

        For i As Integer = 0 To 100
            xlShape = xlSheet.Shapes.AddTextbox(MsoTextOrientation.msoTextOrientationHorizontal, _
                                                 100 + 100 * i, 100 + 100 * i, 100, 100)
            xlShape.Name = "textBoxName" & TextBoxSu
            '〇テキストボックスへテキスト追加
            xlTextBox = xlSheet.TextBoxes("textBoxName" & TextBoxSu)
            xlTextBox.Text = i
            MRComObject(xlShape)
            MRComObject(xlShapes)
            TextBoxSu += 1

            ' 〇テキストボックス(ライン色変更)
            xlTextBox.ShapeRange.Line.ForeColor.RGB = RGB(0, 0, 255)
            MRComObject(xlTextBox.ShapeRange)

            xlTextBox.ShapeRange.Line.Weight = 3 '太さ
            MRComObject(xlTextBox.ShapeRange)
            '〇テキストボックス フォント変更
            'xlTextBox.Font.Size = 15
            'MRComObject(xlTextBox.Font)

            '〇テキストボックス背景色変更
            xlTextBox.ShapeRange.Fill.ForeColor.SchemeColor = i
            MRComObject(xlTextBox.ShapeRange)
            MRComObject(xlTextBox)
        Next i
        xlBook.SaveAs(FilePath, FileFormat:=Excel.XlFileFormat.xlOpenXMLWorkbook)

        '▼終了処理
        MRComObject(xlShapes)
        MRComObject(xlSheet)              'xlSheet の解放
        MRComObject(xlSheets)              'xlSheets の解放
        xlBook.Close()                   'xlBook を閉じる
        MRComObject(xlBook)                'xlBook の解放
        MRComObject(xlBooks)               'xlBooks の解放
        xlApp.Quit()                       'Excelを閉じる
        MRComObject(xlApp)                 'xlApp を解放

        MessageBox.Show("保存しました", "メッセージ", MessageBoxButtons.OK, MessageBoxIcon.Information)

    End Sub
    '●エクセルの開放
    Public Shared Sub MRComObject(Of T As Class)(ByRef objCom As T, Optional ByVal force As Boolean = False)
        If objCom Is Nothing Then
            Return
        End If
        Try
            If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then
                If force Then
                    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objCom)
                Else
                    Dim count As Integer = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom)
                End If
            End If
        Finally
            objCom = Nothing
        End Try
    End Sub


End Class

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。