按钮上的文本框刷新的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 
+0

不要重新申报了Excel子例程中的对象。这些应该是类(形式)级变量。或者选择正确的书而不是添加一本。 –

我简化如下:

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 
+0

Baroooo谢谢你soh muchhh!其实你的建议做的工作。 –

+0

很高兴:) – Baro

+0

这对我来说很奇怪,唯一的变化实际上可以做到这一点,因为仍然存在'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 

感谢大家的回应

+1

你只需要一张支票。此外,第二,第四和第五是无用的,因为你总是将检查对象设置为“Nothing”...查看我的答案以获取最短所需的代码。而且用户关闭Excel时仍然需要注意... – user3598756

+0

更好地使用表单加载事件或新函数来初始化这些excel对象,并使用表单关闭事件来清理,假设您将要做的不仅仅是那一个按钮点击。 –