在受保护的共享Excel工作簿中打开字段

我有一个共享,受保护的工作簿,有一个button来调出search表单。 这个表单上有两个字段,txtYear和cbxRegion,我需要启用。 每当我尝试打开字段,它将工作,直到我退出Excel。

我已经尝试了保护工作簿,取消保护工作簿,并在VBA中提出任何参考以重新保护表格。 而且,即使是编辑过的VBA也能恢复到原来的状态。

这是指代我需要启用的表单的代码部分。 任何援助将不胜感激。 我正在使用Excel 2010。

Private Sub UserForm_Initialize() Dim strDb As String Dim rs As ADODB.Recordset Dim cn As ADODB.Connection Dim row As Integer Dim AccessVersionID As String cbxRegion.Value = Worksheets("Parameters").Cells(5, 14) Me.txtYear = Worksheets("Parameters").Cells(4, 7) Me.chkBoth = Worksheets("Parameters").Cells(9, 2) Me.chkConsultant = Worksheets("Parameters").Cells(7, 2) Me.chkInHouse = Worksheets("Parameters").Cells(8, 2) 'Set region values 'Open connection 'Select Case SysCmd(acSysCmdAccessVer) 'Case 11: AccessVersionID = "2003" 'End Select 'If AccessVersionID = "2003" Then ' strDb = Worksheets("Parameters").Cells(17, 2).Value 'This will reference the path 'Else strDb = Worksheets("Parameters").Cells(18, 2).Value 'End If Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & strDb & ";" Set rs = New ADODB.Recordset 'Get recordset With rs Set .ActiveConnection = cn .Open "Select * From LookupRegion" .Requery End With 'Add regions row = 0 With rs .MoveFirst Do Until .EOF cbxRegion.AddItem ![region] cbxRegion.list(row, 1) = ![RegionName] row = row + 1 .MoveNext Loop End With 'Close the recordset rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub 

我设法得到它的工作。 为了,我:

  • 取消共享工作簿
  • 不受保护的工作簿
  • 保存,closures并重新打开工作簿以确保设置保持不变
  • 启用这些字段
  • 保存,closures并重新打开工作簿以确保设置保持不变
  • 保护工作簿
  • 共享工作簿(按照规范要求,我宁愿不分享它,但这真的不是我的电话)
  • 保存,closures并重新打开工作簿以确保设置保持不变

现在它完全按照我需要的方式工作。

就我而言,任何人都可以给你一个共享工作簿的build议是:不要使用它们。

共享工作簿不可能排除故障。 他们的exception行为是不能修复的。 他们不遵循任何逻辑。 一旦共享的工作簿开始行动起来,performance奇怪,你已经到了不可避免的结束阶段。 没有什么可以解决它。 行为不一定是可重复的。

如果您需要对数据集同时进行多用户写入访问,则Excel是错误的工具。 使用数据库。

不要使用共享的工作簿。