- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用包含宏的 Excel 2011 32 位(适用于 Mac)电子表格。问题是这个宏在 PC 上运行良好,但在 Mac 上不行。我尝试导入 Tim Hall 的 Dictionary.cls,但还是不行。 KeyValuePair.cls 也是如此。
Error: Run-time error ’429’ ActiveX component can’t create object
Set dAttributes = CreateObject("New.Dictionary")
Set dValues = CreateObject("New.Dictionary”)
Option Explicit
Sub GenerateResults()
Dim LO As ListObject
Dim LO2 As ListObject
Dim LR As ListRow
Dim ws As Worksheet
Dim cCount As Integer
Dim gCount As Integer
Dim dAttributes As Object
Dim dValues As Object
Dim dKey As Variant
Dim c As Range
Dim v As Variant
Dim i As Integer
Dim InsertCount As Integer
Set LO = ActiveSheet.ListObjects("Data")
If LO Is Nothing Then MsgBox "Please select the table and re-run": Exit Sub
With Application
.EnableEvents = False
.DisplayAlerts = False
.ScreenUpdating = False
End With
LO.AutoFilter.ShowAllData
Set ws = ActiveWorkbook.Sheets.Add
ws.Range("A1:C1").Value = Array("Candidate", "Attribute", "Value")
ws.ListObjects.Add xlSrcRange, Range("A1:C1"), , xlYes
Set LO2 = ws.Range("A1").ListObject
Set dAttributes = CreateObject(“New.Dictionary")
For Each c In LO.ListColumns("Attribute").DataBodyRange.Cells
If Not dAttributes.Exists(c.Value) Then dAttributes(c.Value) = c.Value
Next c
For Each dKey In dAttributes.Keys
LO.Range.AutoFilter Field:=LO.ListColumns("Attribute").Index, Criteria1:=dKey
gCount = Evaluate("SUM(--(FREQUENCY(IF(" & LO.Name & "[Attribute]=""" & dKey & """,MATCH(" & LO.Name & "[Value]," & LO.Name & "[Value],0)),ROW(" & LO.Name & "[Value])-ROW(" & LO.Name & "[[#Headers],[Value]]))>0))")
cCount = Evaluate("SUM(--(FREQUENCY(IF(" & LO.Name & "[Attribute]=""" & dKey & """,MATCH(" & LO.Name & "[Candidate]," & LO.Name & "[Candidate],0)),ROW(" & LO.Name & "[Candidate])-ROW(" & LO.Name & "[[#Headers],[Candidate]]))>0))")
v = GenerateSplit(cCount, gCount)
Set dValues = CreateObject(“New.Dictionary")
For Each c In LO.ListColumns("Value").DataBodyRange.SpecialCells(xlCellTypeVisible)
If Not dValues.Exists(c.Value) Then dValues(c.Value) = c.Value
Next c
InsertCount = 0
i = 1
For Each c In LO.ListColumns("Candidate").DataBodyRange.SpecialCells(xlCellTypeVisible)
TryAgain:
If i <= v(InsertCount, 2) Then
Set LR = LO2.ListRows.Add
LR.Range.Value = Array(c.Value, dKey, dValues.Items()(InsertCount))
i = i + 1
Else
i = 1
InsertCount = InsertCount + 1
GoTo TryAgain
End If
Next c
Next dKey
LO.AutoFilter.ShowAllData
LO.Range.Worksheet.Select
With Application
.EnableEvents = True
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub
Option Explicit
Sub GenerateResults()
Dim LO As ListObject
Dim LO2 As ListObject
Dim LR As ListRow
Dim ws As Worksheet
Dim cCount As Integer
Dim gCount As Integer
Dim dAttributes As Object
Dim dValues As Object
Dim dKey As Variant
Dim c As Range
Dim v As Variant
Dim i As Integer
Dim InsertCount As Integer
#If Mac Then
Set dAttributes = New Dictionary
Set dValues = New Dictionary
#Else
Set dAttributes = CreateObject("Scripting.Dictionary")
Set dValues = CreateObject("Scripting.Dictionary")
#End If
Set LO = ActiveSheet.ListObjects("Data")
If LO Is Nothing Then MsgBox "Please select the table and re-run": Exit Sub
With Application
.EnableEvents = False
.DisplayAlerts = False
.ScreenUpdating = False
End With
LO.AutoFilter.ShowAllData
Set ws = ActiveWorkbook.Sheets.Add
ws.Range("A1:C1").value = Array("Candidate", "Attribute", "Value")
ws.ListObjects.Add xlSrcRange, Range("A1:C1"), , xlYes
Set LO2 = ws.Range("A1").ListObject
' Set dAttributes = CreateObject("New Dictionary")
For Each c In LO.ListColumns("Attribute").DataBodyRange.Cells
If Not dAttributes.Exists(c.value) Then dAttributes(c.value) = c.value
Next c
For Each dKey In dAttributes.Keys
LO.Range.AutoFilter Field:=LO.ListColumns("Attribute").Index, Criteria1:=dKey
gCount = Evaluate("SUM(--(FREQUENCY(IF(" & LO.Name & "[Attribute]=""" & dKey & """,MATCH(" & LO.Name & "[Value]," & LO.Name & "[Value],0)),ROW(" & LO.Name & "[Value])-ROW(" & LO.Name & "[[#Headers],[Value]]))>0))")
cCount = Evaluate("SUM(--(FREQUENCY(IF(" & LO.Name & "[Attribute]=""" & dKey & """,MATCH(" & LO.Name & "[Candidate]," & LO.Name & "[Candidate],0)),ROW(" & LO.Name & "[Candidate])-ROW(" & LO.Name & "[[#Headers],[Candidate]]))>0))")
v = GenerateSplit(cCount, gCount)
' Set dValues = CreateObject("Scripting.Dictionary")
For Each c In LO.ListColumns("Value").DataBodyRange.SpecialCells(xlCellTypeVisible)
If Not dValues.Exists(c.value) Then dValues(c.value) = c.value
Next c
InsertCount = 0
i = 1
For Each c In LO.ListColumns("Candidate").DataBodyRange.SpecialCells(xlCellTypeVisible)
TryAgain:
If i <= v(InsertCount, 2) Then
Set LR = LO2.ListRows.Add
LR.Range.value = Array(c.value, dKey, dValues.Items()(InsertCount))
i = i + 1
Else
i = 1
InsertCount = InsertCount + 1
GoTo TryAgain
End If
Next c
Next dKey
LO.AutoFilter.ShowAllData
LO.Range.Worksheet.Select
With Application
.EnableEvents = True
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub
最佳答案
New.Dictionary
不是有效的类名,在 PC 上也会失败。通常使用早期绑定(bind)的构造是:
Set obj = New Dictionary
Set obj = CreateObject("Scripting.Dictionary")
I tried to import Tim Hall’s Dictionary.cls, but it still doesn’t work. Same thing for KeyValuePair.cls.
Dictionary
Mac OS 上的类和
Scripting.Dictionary
Windows 操作系统上的类(class)。
Set dAttributes = CreateObject("New.Dictionary")
Set dValues = CreateObject("New.Dictionary")
Scripting.Dictionary
没有采取一些额外的预防措施来避免错误。
If the operating system is Mac, then:
Do this
ElseIf the operating system is Win, then:
Do that instead
End If
KeyValuePair.cls
和
Dictionary.cls
来自
the other answer which implements the Dictionary replica 的代码进入纯文本文件,并将两个模块都导入项目的 VBE。
#IF Mac Then
Set dAttributes = New Dictionary
Set dValues = New Dictionary
#Else
Set dAttributes = CreateObject("Scripting.Dictionary")
Set dValues = CreateObject("Scripting.Dictionary")
#End If
Set LO = ActiveSheet.ListObjects("Data")
dAttributes
中的任何一个之前将该代码放在任何位置即可或
dValues
,不管你把它放在哪里。
Dictionary.cls
模仿
Scripting.Dictionary
的方法。
关于excel - ActiveX 组件无法创建对象 --- Excel for Mac,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43738332/
我创建了一个安装在客户端计算机上的 ActiveX 控件。现在我已经在 ActiveX 控件中进行了一些更改,现在希望更改的 ActiveX 应该在客户端计算机中自动更新。 我已将安装文件的版本从 1
我用 C# 创建了一个 com 组件,并使用 Regasm 注册了该组件。我现在可以通过使用 ActiveXObject(...) 在 IE 中使用它。然而,这只在我更改 IE 安全设置并允许运行
我以前做过,但我完全忘记了如何签署 activeX 控件? 最佳答案 Digital Signing for ActiveX Components (MSDN) 关于activex - 签署 Acti
我有一个多页网页流 (jsp)。用户完成大量工作后,我需要使用 activex 组件,如果机器上没有显示,用户会在顶部显示黄色条以接受组件,接受后页面将重新加载,用户必须重复所有操作工作,请注意页面已
背景 有一个由 VB 创建的旧 ActiveX 控件。我将此 ActiveX 控件添加到我的 Excel 工作簿并设置了一些属性。这些属性是在保存书籍时保存的。具体来说,它们在 VB 代码中使用 Pr
我有一个想要从 SAP 调用的自定义 ActiveX 控件。 在这种情况下我不能使用 PI,我还有什么其他选择? 最佳答案 看节目 SAPRDEMO_ACTIVEX_INTEGRATION 举个例子。
我的 .NET 程序中有 WebBrowser 控件。实际上使用哪个 .net 包装器(wpf 或 winforms)并不重要,因为它们都包装 ActiveX 组件“Microsoft Interne
我有一个正在注册多个 dll 的安装程序,需要知道这是否成功。 最佳答案 这似乎对我有用:http://www.nirsoft.net/utils/registered_dll_view.html 关
如何将 ActiveX 应用程序转换为 NPAPI 应用程序? 我找到的所有方法都是为 NPAPI 实现入口点和映射函数。 (NPP_GetEntryPoints...)除了使用 Framework
“ActiveX 控件——小程序构建 block ——可以用于创建分布式应用程序,这些应用程序可以通过 Web 浏览器在 Internet 上运行。示例包括用于收集数据、查看某些类型的文件和显示动画的
微软发布了 Edge 浏览器,该浏览器不支持 ActiveX。 我有一个应用程序需要从 Windows 注册表获取信息,因此我对 ActiveX 的替代方案有一些疑问: 有没有办法通过 Edge 或类
我正在使用现有的 SDK 编写一个附加组件,该 SDK 没有类似 webview 的组件,但允许使用 ActiveX 控件。 所以我想到的唯一想法是找到一个实现网络浏览器的 ActiveX 控件,或者
嗨,我有一个这样的 ActiveX: CMyActiveX 类: 公共(public) CComObjectRootEx... ... { HRESULT FinalContruct(){return
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 5年前关闭。 Improve this questi
我有一个放置在 IE 浏览器容器中的 ActiveX 控件。该控件创建另一个启用了 WS_POPUP 和 WS_LAYERED 属性的对话框窗口,以便能够使用 SetLayeredWindowAttr
几天前,我在 Internet Explorer 中搜索了一种无需打印对话框直接打印的方法,并找到了这个 solution . 在此解决方案中,使用 ActiveX 对象“Shell.Explorer
我在服务器端使用 ASP.NET,在客户端使用 JavaScript。 我正在尝试开发一些有助于用户进行故障排除的页面,我想知道是否有一种方法可以通过编程方式确定以下内容: 如果 ActiveX 在
在 Visual Studio 2008 中,我可以创建一个 MFC activex 项目,它提供了一个向导来创建单个 activex 控件。我现在想在这个项目中创建新控件。 我找不到任何方法来做到这
我正在尝试为一个简单的 hello world 消息框运行 activex 控件。 首先,我创建了类库,现在有了 dll,然后我创建了 HTML 页面并调用了 activeX 控件:
免责声明:我没有签署文件的经验,这是我第一次。 我们的网站有一个通配符 SSL 证书。现在我们要在我们的一个站点上托管一个 ActiveX 控件。当我尝试使用该证书对我的 cab 文件进行签名时,它会
我是一名优秀的程序员,十分优秀!