gpt4 book ai didi

excel - 如何从 VBA Access 中勾选 Excel 复选框

转载 作者:行者123 更新时间:2023-12-04 21:55:21 27 4
gpt4 key购买 nike

我已经通过 VBA Access 打开了一个 Excel 文件,并且可以在 Excel 单元格中读写。如何勾选 Excel Ckeck 框?

我的代码:

Dim Excel_App  As Object
Dim strExcel As String
Set Excel_App = CreateObject("Excel.Application")
Excel_App.Visible = True
Excel_App.Workbooks.Open fready
With Excel_App
.CheckBox3.Value = True 'This line is used in VBA Excel and I need in Access
End With

最佳答案

复选框属于特定 Worksheet 上的特定集合.这是哪个集合,取决于您要查找的控件类型。

您的代码写得好像复选框属于 Excel.Application对象 - 那行不通。

首先,您需要保留对 Workbook 的引用。你正在打开的对象,所以不是这个:

Excel_App.Workbooks.Open fready


你需要这个:
Dim book As Object ' early-bound: As Excel.Workbook
Set book = Excel_App.Workbooks.Open(fready)

如果您不知道要在哪个工作表上找到复选框,则必须迭代工作簿的 Worksheets收藏:
Dim sheet As Object ' early-bound: As Excel.Worksheet
For Each sheet In book.Worksheets
'todo
Next

表单控件

所以我们正在寻找 CheckBox表格控制。我们会在工作表的 Shapes 中找到它。集合,当它的 Type 时,我们就会知道我们正在查看一个表单控件。是 msoFormControl ;当它的 FormControlType 时,我们就会知道它是一个复选框控件。属性(property)返回 xlCheckBox :
Dim sheet As Object ' early-bound: As Excel.Worksheet
For Each sheet In book.Worksheets
Dim shp As Object ' early-bound: As Excel.Shape
For Each shp In sheet.Shapes
If shp.Type = 8 ' early-bound: msoFormControl
If shp.FormControlType = 1 ' early-bound: xlCheckBox
'todo
End If
End If
Next
Next

所以现在我们知道了 shp是一个复选框表单控件。 Value可通过 ControlFormat Access 对象/属性,因此您可以设置名为 Check Box 1 的复选框的值(这是默认名称)像这样:
If shp.Name = "Check Box 1" Then
shp.ControlFormat.Value = 1 'checked
End If

当然,如果您已经知道要查找的特定工作表,则无需全部迭代。

ActiveX 控件

如果控件是 ActiveX 控件,那就完全不同了。您可以在 OLEObjects 中找到它集合,其中包含 OLEObject具有 Object 的实例返回 MSForms.CheckBox 的属性目的;您可以从 OLEObject.ShapeRange.Name 获取复选框的名称:
Dim ctrl As Object ' early-bound: As Excel.OLEObject
For Each ctrl In sheet.OLEObjects
If TypeName(ctrl.Object) = "CheckBox" Then ' early-bound: If TypeOf ctrl.Object Is MSForms.CheckBox Then
If ctrl.ShapeRange.Name = "CheckBox1" Then
ctrl.Object.Value = True ' checked
End If
End If
Next

注意早绑定(bind) TypeOf ctrl.Object Is MSForms.CheckBox check 比后期绑定(bind)的 TypeName 更加稳健查看。您需要通过 Tools > References 引用 MSForms 类型库才能使用它(如果您的 VBA 项目有任何 UserForm 组件,它已经被引用,在这种情况下,早期绑定(bind)代码是不费吹灰之力的)。

关于excel - 如何从 VBA Access 中勾选 Excel 复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46003167/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com