我在Visual Studio 2013中创建了一个表单,用于同时在多个用户的Excel中输入数据。除非两个用户同时打开表单,或者点击了提交并且表单仍在处理,否则会发生错误。写入excel和只读属性vb.net
未处理的异常发生在您的应用程序。来自HRESULT的例外:0x800A03EC
将数据写入文件时,我想让它只读,以便其他用户可以等待。我该怎么做呢?
Imports excel = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices
Public Class Form1
Dim xlapp As New excel.Application
Dim workbook As excel.Workbook
Dim worksheet As excel.Worksheet
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
workbook = xlapp.Workbooks.Open("\2.xlsx")
xlapp.Visible = False
worksheet = workbook.Sheets("sheet1")
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If workbook.MultiUserEditing Then
workbook.AcceptAllChanges()
workbook.Save()
End If
Dim row As Long
Dim alpha As Long = 0
row = 5
With worksheet
Do While .Cells(row, 4).value IsNot Nothing
row = row + 1
Loop
.Cells(row, 2).value = Me.fname.Text
.Cells(row, 3).value = Me.lname.Text
Me.fullname.Text = Me.fname.Text + Me.lname.Text
.Cells(row, 4).value = Me.fullname.Text
End With
xlapp.DisplayAlerts = False
workbook.SaveAs("\2.xlsx", AccessMode:=excel.XlSaveAsAccessMode.xlShared)
End Sub
End Class
你有没有考虑制作的Excel文件的模板? – JohnG
这是什么意思?对不起,我对这一切都不知道 – user5538704
模板文件就像只读文件。例如:当您使用'workbook = xlapp.Workbooks.Open(“\ 2.xlsx”)打开一个常规的excel文件时,这会打开文件并保持打开状态,直到用户关闭它为止。另一方面,模板将简单地将自身作为新文件复制到用户“Document1”并关闭模板。然后,当用户尝试保存该文件时,系统会提示他们为其提供文件名,因为该模板已关闭。那么用户在同一时间抓取文件的可能性就会降低。 – JohnG