VB6应用程序控制字在调试期间的行为与编译时不同

VB6应用程序控制字在调试期间的行为与编译时不同,vb6,office-interop,Vb6,Office Interop,我有一个vb6应用程序,它使用Word interop创建一些报告。在这些报告的介绍中,在图像周围的4个文本框中有一些说明 最近,前两个文本框突然出现在下一页上,我不知道为什么。当我一步一步地浏览代码并观看word文档的构建时,所有内容都会正确定位,但是,如果我编译应用程序,错误会再次出现 有什么建议吗?使用延迟绑定调用Word。这并不意味着删除对Microsoft Word Xxx对象库的引用,只需像这样更改Dims即可 Dim oWord As Object '--- was Word.Ap

我有一个vb6应用程序,它使用Word interop创建一些报告。在这些报告的介绍中,在图像周围的4个文本框中有一些说明

最近,前两个文本框突然出现在下一页上,我不知道为什么。当我一步一步地浏览代码并观看word文档的构建时,所有内容都会正确定位,但是,如果我编译应用程序,错误会再次出现


有什么建议吗?

使用延迟绑定调用Word。这并不意味着删除对Microsoft Word Xxx对象库的引用,只需像这样更改
Dim
s即可

Dim oWord As Object '--- was Word.Application'
Dim oDoc As Object '--- was Word.Document'
...
oDoc.Protect wdAllowOnlyReading '--- keep using enums'

可能是“四舍五入”的差异吗?例如,如果比较的两个值,结果可能会微妙地取决于特定的编译器/解释器实现


我想建议您将显示不同行为的代码缩减到最低限度。这可能已经把事情弄清楚了。如果没有,请将其发布在此处,让我们为您提供帮助。

也许您在调试时运行编译版本的用户与运行VB的用户不同?如果两个用户有一些不同的单词设置,这可能会导致您所描述的内容

编译版本是否可能找到不同版本的.dot文件


如果您展示了用于创建Word文档的代码,这可能会非常有用,因为这里的人可能会注意到一些移动到编译版本是明智的。

在依赖于时间的事件中,例如表单激活、加载或卸载,您是否有任何代码?我已经看到,在单步执行代码和编译时,特别是在更新、更快的机器上,这些东西的行为非常不同

我们主要是这样做的。只有少数人是“早起的”。修复了它们,没有帮助。这个答案与我刚刚在Excel中遇到的类似问题非常有效。如果没有代码或更多详细信息,就不可能解决这个问题。例如,您是否在测试中使用A4大小的纸张,但在编译版本中使用字母(即美国市场的默认单词)?文本框的重新定位可能与页边距、浮动特性和纸张大小有关。如果您能提供更多详细信息,我们可能会想出一个答案/解决方案。使用Word com interop,它会打开一个预先制作的.DOT文件,填充数据,打印成pdf,然后关闭。它在debug和compiled中打开相同的.DOT文件,并且不会弄乱纸张设置或任何东西。