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

时间:2014-06-26 01:13:14

标签: excel vba excel-vba excel-2010

我有一个共享的受保护工作簿,其中包含一个用于显示搜索表单的按钮。这个表单上有两个字段,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

2 个答案:

答案 0 :(得分:1)

我设法让它发挥作用。按顺序,我:

  • 取消共享工作簿
  • 不受保护的工作簿
  • 保存,关闭并重新打开工作簿以确保设置保持
  • 启用字段
  • 保存,关闭并重新打开工作簿以确保设置保持
  • 保护工作簿
  • 分享了工作簿(根据我给出的规范要求,我宁愿不分享它,但它真的不是我的电话)
  • 保存,关闭并重新打开工作簿以确保设置保持

现在它完全符合我的需要。

答案 1 :(得分:0)

就我而言,任何人都可以为您提供共享工作簿的最佳建议是:不要使用它们。

共享工作簿无法排除故障。他们的异常行为无法修复。他们没有遵循任何逻辑。一旦共享工作簿开始表现并且行为奇怪,您就已经达到了不可避免的最终阶段。没有什么可以修复它。该行为不一定可重复。

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

不要使用共享工作簿。