首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA终端用户升级Microsoft 2007到2010 (VBA 6到VBA7)的问题和需要文档,帮助,提示。(受够了关键字)

VBA终端用户升级Microsoft 2007到2010 (VBA 6到VBA7)的问题和需要文档,帮助,提示。(受够了关键字)
EN

Stack Overflow用户
提问于 2011-06-02 06:15:40
回答 3查看 8.3K关注 0票数 4

作为典型的小企业用户,当我的笔记本电脑坏了,我不得不升级到Office 2010 (2007不再上市)。现在我有一堆既快又脏的VBA和我的旧工作表。其中没有一个是编程杰作,但这些作品都是用excel和office 2007完成的。

现在,我试着在Office 2010上使用我的旧东西,所有的东西都有点不适合使用。我在网上搜索了两天,试图为最终用户找到任何文档,没有任何运气。我发现了很多针对专业程序员的博客,他们希望制作防弹代码,从Office 0到Office2010,32位到64位(这里是8位吗?),但没有一篇文章谈到主要业务,即拥有大量自制编码以生存一天的最终用户。

如何使我的旧的2007VBA与2010年一起工作?

不,我不需要它向后兼容任何东西,只要它能与我的新电脑和新软件一起工作就足够了(在我的例子中,它是64位,如果有人想知道的话)。我只需要知道为什么我的代码不再工作了,以及如何处理它。我真正想要的是一些指向真实信息的指针,如果有的话!当然,我可以将我的代码的每一部分复制到程序员讨论论坛上,被人嘲笑,几周后我可能会让他们中的一些人开始工作,但我真正需要的是写给基本VBA用户的真实信息。我要学这个。

,那么你有什么问题?

什么改变了?

日历活动-X组件丢失。我找到了解决方案:other-customize/missing-calendar-control/03ad5d05-ca3f-4081-9989-e757223ebdde,现在我只需要在我所有的表单…上重做每个日历谢谢。

Textbox.Text没有工作,我找到并运行了Microsoft代码兼容性检查器(CII),它显示出我有几千个被“废弃”的Textbox.Text元素--“可能包含删除的对象模型项”--什么?

它变得越来越好,同样的微软软件说:“类型:不推荐的项目: xlsSmartTagRecognizer.FullName网址:http://go.microsoft.com/?linkid=9719761代码: MyFullName =ThisWorkbook.FullName”“无解释…”(顺便说一句。阻止检查人员并查看结果的唯一方法是CRT-ALT-DEL -Stop…)

我参观了检查专员提供的链接,没有提供任何帮助。

我做了几次检查,每次都有不同的结果。这很有趣。

我听到你的问题了,现在给我看看你的问题

我该从哪里开始。这是一个。我有一个表单,用户可以在其中进行新的“约会”,在保存时,VBA会在日历工作表中创建代码和新形状(以及Outlook,但这不是重点)。当用户返回并单击该形状按钮时,按钮运行一段创建的代码。以下是代码:

代码语言:javascript
复制
Private Sub myMacro2001_Click()
    Dim meetingId As Integer
    meetingId = 2001
    Load formHours
    Call formHours.selectMeeting(meetingId)
    formHours.Show vbModeless
End Sub

据推测,早在2007年,它就打开了formHours表格,其中存储了2001年会议的信息(meetingId)。

formHours中的代码以以下方式开始:

代码语言:javascript
复制
Sub selectMeeting (ByRef IdNo As Integer) ’Bring in the meeting ID
Meeting = IdNo
    ….

不太优雅,但成功了。不会再那么做了。

如果你能帮我处理这个案子,我很感激,但如果你能告诉我我应该在哪里找到答案,那就更好了。什么改变了?以前工作过,现在不起作用了。该怎么办呢?

(PS. )我知道我的代码很糟糕,但是它在…上工作。我只想知道是什么改变了,我需要如何改变。

Ps.Ps是的,我知道我应该问微软,但你知道这是怎么回事…)

随访

在巴罗克和其他人提出一些善意的建议后,我设法解决了一些问题。将Text.Text改为Text.Value会产生一系列新的问题,一些文本值被用于公式,现在我需要修改它们,Val(FooTextBox.Value)

真正令人惊讶的是,2010年看起来非常缓慢!我在2007年和2010年并肩作战,2007年赢得了胜利。我的一个工人已经用2007年开了一家客户发票,那时2010年还在营业!有趣的是,2007年运行的是Athlon X2双核和有限内存,2010年是在我的新笔记本电脑的Corei7-740QM,6 GB,都在win7 7-64上。我在网上冲浪,没有发现任何抱怨说2010年Office上的VBA7比Office2007上的VBA6慢得多。我不知道这是否只是我的问题,但我的员工投票支持2007年的专心致志.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-02 11:28:01

对于所有TextBox实例,将.Text更改为.Value

SmartTagRecognizer问题似乎是假阳性,因此不需要采取任何行动。

对于表单的错误,您可以尝试以这种方式创建表单,以查看它是否有用:

代码语言:javascript
复制
Private Sub myMacro2001_Click()

Dim meetingId As Integer
Dim fmHours As formHours

meetingId = 2001
Set fmHours = New formHours

fmhours.selectMeeting meetingId
fmHours.Show vbModeless

End Sub

此外,还可以将Sub selectMeeting更改为Public Sub selectMeeting

关于Office 2007和Office 2010之间VBA实际差异的文档似乎有点稀疏。此页特别提到32位ActiveX控件(包括自定义的和内置的)不会在64位版本的Office 2010中工作。因此,这很可能是你问题的根源。

还有一段来自Microsoft 这里的引用。

64位版本的Office 2010产品会出现吗? 是的,64位Office 2010产品升级将提供.然而,我们强烈建议大多数用户在32位和64位操作系统上安装32位版本的Office 2010,因为目前许多常见的Office外接程序将无法在64位版本中运行。是Microsoft 2010产品的64位安装,适用于那些通常使用非常大的文档或数据集并需要Excel 2010程序访问大于2GB内存的用户。64位版本可能存在技术问题,要安装64位版本的Office 2010产品,用户必须在其PC上拥有64位支持的操作系统。

(我强调)

如果可以,请尝试安装到Office 2010的32位版本

票数 1
EN

Stack Overflow用户

发布于 2012-12-09 05:13:41

我也有问题..。几十年来,我一直用它来创建"=“字符串,用于文本中的可视中断等等.

代码语言:javascript
复制
STRING$(80,"=")

现在人们告诉我,Excel 2010中的代码失败了。

上面这些东西的替代品是什么?我是说..。我可以这么做..。

代码语言:javascript
复制
For X = 1 to 80
print "=";
next x
print

但这是一个真正的倒退。

有一个潜在的解决办法。就是把它改成这样引用VBA .

代码语言:javascript
复制
VBA.STRING$(80,"=")

它似乎在2007年仍然有效。

票数 0
EN

Stack Overflow用户

发布于 2016-04-21 16:30:49

从@barrowc上了解到这一点:

此页面特别提到32位ActiveX控件(包括自定义和内置)在64位版本的Office 2010中无法工作。

我有一个部分解决方案--用嵌入图像的形状替换ActiveX按钮--您需要的一些答案可能在我给出了一个关于假装“按钮点击”行为的答案中。

这是大量的工作,您正在从事件驱动的代码倒退到能力较差的对象和过时的“分配宏”设计。但是,您至少可以维护工作表设计的可视化可用性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6211121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档