按钮上的文本框刷新的Excel工作表单击Visual Basic
我想创建一个将文本框值发送到Excel工作表的代码。每次按下按钮时,文本框的值都会替换上一个。我已经完成的只是将此值发送到Excel工作表,但每次新的点击都有一个新的工作簿打开。我应该改变什么?按钮上的文本框刷新的Excel工作表单击Visual Basic
这里是代码
Imports System.Data.OleDb
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
Dim objApp As Excel.Application
Dim objBook As Excel._Workbook
Dim objBooks As Excel.Workbooks
Dim objSheets As Excel.Sheets
Dim objSheet As Excel._Worksheet
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Create a new instance of Excel and start a new workbook.
objApp = New Excel.Application()
objBooks = objApp.Workbooks
objBook = objBooks.Add
objSheets = objBook.Worksheets
objSheet = objSheets(1)
objSheet.Range("A1").Value = TextBox1.Text
'Return control of Excel to the user.
objApp.Visible = True
objApp.UserControl = True
'Clean up a little.
objSheet = Nothing
objSheets = Nothing
objBooks = Nothing
End Sub
End Class
我简化如下:
Public Class Form1
Dim objApp As Excel.Application
Dim objCell As Excel.Range
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If objCell Is Nothing Then
objApp = New Excel.Application()
objCell = objApp.Workbooks.Add.Worksheets(1).Range("A1")
End If
objCell.Value = TextBox1.Text
'Return control of Excel to the user.
objApp.Visible = True
objApp.UserControl = True
End Sub
End Class
这段代码也应做出更强大的处理这种情况的用户关闭Excel的
更改此:
objApp = New Excel.Application()
在
If objApp Is Nothing Then
objApp = New Excel.Application()
End If
Baroooo谢谢你soh muchhh!其实你的建议做的工作。 –
很高兴:) – Baro
这对我来说很奇怪,唯一的变化实际上可以做到这一点,因为仍然存在'objBook = objBooks.Add'仍然添加一个新的工作簿... – user3598756
这次终于做了工作
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If objApp Is Nothing Then
objApp = New Excel.Application()
End If
If objBooks Is Nothing Then
objBooks = objApp.Workbooks
End If
If objBook Is Nothing Then
objBook = objBooks.Add
End If
If objSheets Is Nothing Then
objSheets = objBook.Worksheets
End If
If objSheet Is Nothing Then
objSheet = objSheets(1)
End If
objSheet.Range("A1").Value = TextBox1.Text
'Return control of Excel to the user.
objApp.Visible = True
objApp.UserControl = True
'Clean up a little.
objSheet = Nothing
objSheets = Nothing
objBooks = Nothing
End Sub
感谢大家的回应
你只需要一张支票。此外,第二,第四和第五是无用的,因为你总是将检查对象设置为“Nothing”...查看我的答案以获取最短所需的代码。而且用户关闭Excel时仍然需要注意... – user3598756
更好地使用表单加载事件或新函数来初始化这些excel对象,并使用表单关闭事件来清理,假设您将要做的不仅仅是那一个按钮点击。 –
不要重新申报了Excel子例程中的对象。这些应该是类(形式)级变量。或者选择正确的书而不是添加一本。 –