タイトル : エクセルへのテキストボックス描写方法 投稿日 : 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 |