如何永久保存通过vb.net userform输入excel的数据,而不使用输入的新数据替换以前的数据

如何永久保存通过vb.net userform输入excel的数据,而不使用输入的新数据替换以前的数据,vb.net,Vb.net,我创建了一个vb.net用户表单,将数据输入excel。但问题是,每当我输入新数据时,以前的数据就会被新数据替换,而无需任何检索手段。因此,我的论点是:;我希望在工作表上显示以前输入的数据和新输入的数据。我确实需要代码来解决此问题。还需要代码来显示我在DataGridView上输入的相同数据。我已经尝试了几天几夜,但仍然!提前谢谢 Private Sub BtnAddRecord_Click(sender As Object, e As EventArgs) Handles BtnAddReco

我创建了一个vb.net用户表单,将数据输入excel。但问题是,每当我输入新数据时,以前的数据就会被新数据替换,而无需任何检索手段。因此,我的论点是:;我希望在工作表上显示以前输入的数据和新输入的数据。我确实需要代码来解决此问题。还需要代码来显示我在DataGridView上输入的相同数据。我已经尝试了几天几夜,但仍然!提前谢谢

Private Sub BtnAddRecord_Click(sender As Object, e As EventArgs) Handles BtnAddRecord.Click
    Dim AppExcel As New Excel.Application 'Create a new Excel Application
    Dim workbook As Excel.Workbook = AppExcel.Workbooks.Add("C:\Users\DELL\OneDrive\Documents\VbNetFormDone.xlsx") ' 'Create a new workbook
    Dim sheet As Excel.Worksheet = workbook.Sheets("Sheet1") ' Create variable a Sheet, Sheet1 must be in WorkBook
    AppExcel.Visible = True
    AppExcel.DisplayAlerts = False
    'Work with range'

    Dim AddNew As Range
    AddNew = sheet.Range("A65356").End(XlDirection.xlUp).Offset(1, 0)


    'Range with text address
    AddNew.Offset(0, 0).Value = TextReferenceNo.Text
    AddNew.Offset(0, 1).Value = TextFirstname.Text
    AddNew.Offset(0, 2).Value = TextSurname.Text
    AddNew.Offset(0, 3).Value = TextAddress.Text
    AddNew.Offset(0, 4).Value = TextPostalCode.Text
    AddNew.Offset(0, 5).Value = TextTelephone.Text
    AddNew.Offset(0, 6).Value = TextDateOfReg.Text
    AddNew.Offset(0, 7).Value = TextProveOfId.Text
    AddNew.Offset(0, 8).Value = TextMemberType.Text
    AddNew.Offset(0, 9).Value = TextMemberFees.Text


    workbook.SaveAs("C:\Users\DELL\OneDrive\Documents\VbNetFormDone.xlsx", FileFormat:=56) 'Save the workbook
    workbook.Close() 'Close workbook
    AppExcel.Quit() 'Quit the application

似乎您每次都在创建新的Excel工作簿。这就是为什么新数据过度写入旧数据的原因

请尝试更改此行以打开工作簿,而不是新建工作簿

Dim workbook As Excel.Workbook = AppExcel.Workbooks.Open("C:\Users\DELL\OneDrive\Documents\VbNetFormDone.xlsx")
参考文献:
Add()

Open()


似乎您每次都在创建新的Excel工作簿。这就是为什么新数据过度写入旧数据的原因

请尝试更改此行以打开工作簿,而不是新建工作簿

Dim workbook As Excel.Workbook = AppExcel.Workbooks.Open("C:\Users\DELL\OneDrive\Documents\VbNetFormDone.xlsx")
参考文献:
Add()

Open()


我看不出你在这里哪里出错了。然而,作为一个数据库,您试图做的可能更合适。您仍然可以根据需要将数据从数据库导出到Excel。将您的设计转换为使用DB将为您打开一个全新的数据处理世界。你会发现,像你在这里这样做要容易得多。开发的一部分是能够为工作选择正确的工具。VB.net有一些库可以将您连接到许多不同的数据库。一个好的起点可以是Microsoft Access或SQL Server本地数据库文件。考虑到代码链或语法,我对此没有问题。但问题恰好是覆盖。一旦我尝试在工作表中输入新数据,它将覆盖旧保存的数据。这是我要解决的唯一问题。谢谢!AddNew=sheet.Range(“A65356”)。End(XlDirection.xlUp)。偏移量(1,0)。。。看起来您正在查找第一个空行并在该行上写入数据。到底是什么问题?我看不出你错在哪里了。然而,作为一个数据库,您试图做的可能更合适。您仍然可以根据需要将数据从数据库导出到Excel。将您的设计转换为使用DB将为您打开一个全新的数据处理世界。你会发现,像你在这里这样做要容易得多。开发的一部分是能够为工作选择正确的工具。VB.net有一些库可以将您连接到许多不同的数据库。一个好的起点可以是Microsoft Access或SQL Server本地数据库文件。考虑到代码链或语法,我对此没有问题。但问题恰好是覆盖。一旦我尝试在工作表中输入新数据,它将覆盖旧保存的数据。这是我要解决的唯一问题。谢谢!AddNew=sheet.Range(“A65356”)。End(XlDirection.xlUp)。偏移量(1,0)。。。看起来您正在查找第一个空行并在该行上写入数据。到底是什么问题?非常感谢,但一旦我删除了上述行,这是我收到的异常消息“System.NullReferenceException:“对象引用未设置为对象的实例”。我将非常感谢发送给我的代码的全部语法。谢谢!不要删除那一行。将它从
.Add()
更改为
.Open()
它仍然不起作用。我相信是这行代码(将appExcel改为New Excel.Application)造成了我项目上的所有混乱。我用VBA 6轻松地完成了同一个项目,只创建了一个新的Excel实例。如果您正在成功地将任何内容写入Excel,则此部分工作正常。我现在想知道您的问题是否来自这一行-
AddNew=sheet.Range(“A65356”).End(XlDirection.xlUp).Offset(1,0)
-这不是获取最后使用的行的可靠方法。请查看此问题以了解更好的方法-非常感谢,但一旦我删除了上述行,这是我收到的异常消息“System.NullReferenceException:“对象引用未设置为对象的实例”。我将非常感谢发送给我的整个代码语法。谢谢!不要删除那一行。将它从
.Add()
更改为
.Open()
它仍然不起作用。我相信是这行代码(将appExcel改为New Excel.Application)造成了我项目上的所有混乱。我用VBA 6轻松地完成了同一个项目,只创建了一个新的Excel实例。如果您正在成功地将任何内容写入Excel,则此部分工作正常。我现在想知道您的问题是否来自这一行-
AddNew=sheet.Range(“A65356”).End(XlDirection.xlUp).Offset(1,0)
-这不是获取最后使用的行的可靠方法。查看此问题,了解更好的方法-