end*_*and 14 excel vba activex excel-vba
这个主题讨论了我在Excel电子表格中使用ActiveX对象时遇到的问题.阅读是一团糟,最终没有一个有凝聚力的答案.
问题是100%可重现:
.Font.Size
参数的函数,而是在问题发生后无法更改的内容,而不是持续增加字体大小唯一看似权威的解决方案涉及一个MS补丁(几年前它是一个"修补程序",因此对于完全部署似乎不实用)和注册表编辑,这对我的用例来说不实用.
我正在寻找一种方法:
在线缺乏关于此问题的权威信息.我打算发布我的工作,然而,它甚至没有接近理想,我更喜欢更好的解决方案.
我的解决方法是以编程方式迭代工作表*上的所有 OLE 对象并将代码写入调试器,然后在工作表上包含一个基本上“调整对象大小”的按钮 - 并说明为什么会出现此问题。
此方法将生成驱动该按钮的代码。
但它不会自动更新 - 它是一个快照,只能在部署应用程序之前立即使用(如果最终用户将具有按钮功能)。
那么序列就变成:
Private Sub printAllActiveXSizeInformation()
Dim myWS As Worksheet
Dim OLEobj As OLEObject
Dim obName As String
Dim shName As String
'you could easily set a for/each loop for all worksheets
Set myWS = Sheet1
shName = myWS.name
Dim mFile As String
mFile = "C:\Users\you\Desktop\ActiveXInfo.txt"
Open mFile For Output As #1
With myWS
For Each OLEobj In myWS.OLEObjects
obName = OLEobj.name
Print #1, "'" + obName
Print #1, shName + "." + obName + ".Left=" + CStr(OLEobj.Left)
Print #1, shName + "." + obName + ".Width=" + CStr(OLEobj.Width)
Print #1, shName + "." + obName + ".Height=" + CStr(OLEobj.Height)
Print #1, shName + "." + obName + ".Top=" + CStr(OLEobj.Top)
Print #1, "ActiveSheet.Shapes(""" + obName + """).ScaleHeight 1.25, msoFalse, msoScaleFromTopLeft"
Print #1, "ActiveSheet.Shapes(""" + obName + """).ScaleHeight 0.8, msoFalse, msoScaleFromTopLeft"
Next OLEobj
End With
Close #1
Shell "NotePad " + mFile
End Sub
Run Code Online (Sandbox Code Playgroud)
*注意:不幸的是,这也不会找到分组的对象。