【发布时间】:2016-11-19 01:45:27
【问题描述】:
我正在尝试使用另一个简单的宏自动化将 Excel 表格转换为 LaTeX 源代码的宏。基本上我不想使用用户表单,所以我试图调用我想要的所需输出的按钮单击,但我遇到了问题。
它是 ctan.org 上的 Excel2Latex 宏
这是主要的子,你可以看到我的评论部分是我在寻求帮助后一直在尝试的所有不同的东西。
Sub latex()
With NewController
Set .View = NewView
Set .Model = NewDefaultModel
Set .Storage = NewStorage
.Run
Application.Wait Now + TimeValue("00:00:02")
frmConvert.cmdSave.Object.Value = True
'UserForm2.CommandButton1.Object.Value = True
'frmConvert!cmdSave.SetFocus
'SendKeys "{Enter}"
'Call frmConvert.cmdCopy_Click
'Call frmConvert.cmdSv
'Call frmConvert.cmdCopy_Click
'Call Memento.SaveConversionResultToFile
'Application.Wait Now + TimeValue("00:00:03")
'Application.Run "frmConvert.cmdCopy_Click", txtResult
'frmConvert.cmdCopy = True
'frmConvert.cmdCopy = vbClick
'frm 'Application.Run frmConvert.cmdSave
'Call frmConvert.cmdCopy_Click
'frmConvert.cmdSave = vbClick
End With
End Sub
我想要的按钮后面的代码是私人子
Private Sub cmdSave_Click()
SaveConversionResultToFile mModel
Hide
End Sub
当我尝试调用 cmdSave_Click 子程序时,它返回运行时错误 91、对象变量或未设置块变量。我也尝试将 sub 设置为 Public。
到目前为止,我最幸运的是激活了用户窗体上的复制到剪贴板按钮,但它只是复制了用户窗体中的默认文本,而不是在窗口中生成的 LaTeX 表格。
有什么建议吗?
Public Sub SaveConversionResultToFile(ByVal pModel As IModel)
Dim sFileName As String
sFileName = pModel.AbsoluteFileName
If sFileName = "" Then Exit Sub
Open sFileName For Output As 1
Print #1, pModel.GetConversionResult;
Close #1
End Sub
我在 sFileName = pModel.AbsoluteFileName 行中收到有关 MatthewD 问题的错误。
【问题讨论】:
-
与其尝试调用事件,不如将事件的功能公开
Sub,然后调用它。 -
我也试过了,我会报告确切的错误
-
它是否与它是一个无模式的用户表单有关?
-
很可能 pModel 没有初始化。在此行之前
sFileName = pModel.AbsoluteFileName检查pModel是否为空。Msgbox pModel Is Nothing。结果是什么?对还是错? -
所以你需要先初始化
pModel,然后只有你才能访问它的属性AbsoluteFileName
标签: excel macros latex userform vba