Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net begininvoke似乎无法在某些pc上运行时执行';s_Vb.net_Winforms_Vb.net 2010 - Fatal编程技术网

Vb.net begininvoke似乎无法在某些pc上运行时执行';s

Vb.net begininvoke似乎无法在某些pc上运行时执行';s,vb.net,winforms,vb.net-2010,Vb.net,Winforms,Vb.net 2010,我花了大量时间研究这个问题,在众多论坛中都找不到类似的问题,但如果有人能给我指出一个问题,请告诉我(我问q是最后的选择!) 我继承了下面的代码,在周五更新之前一直运行良好 有点令人费解的是,代码在我的PC上的调试和运行时都能完美执行,并且在我的客户机上一直工作到周五,但现在根本不会在他们的机器上执行 我在W7 64位上运行VS 2010,客户端机器都是XP 32位,请原谅我再次强调,但是自从我在4月份开始这个项目以来,代码的第一部分没有改变,并且从那时起发布了许多更新,所有功能都正常(包括上周初

我花了大量时间研究这个问题,在众多论坛中都找不到类似的问题,但如果有人能给我指出一个问题,请告诉我(我问q是最后的选择!)

我继承了下面的代码,在周五更新之前一直运行良好

有点令人费解的是,代码在我的PC上的调试和运行时都能完美执行,并且在我的客户机上一直工作到周五,但现在根本不会在他们的机器上执行

我在W7 64位上运行VS 2010,客户端机器都是XP 32位,请原谅我再次强调,但是自从我在4月份开始这个项目以来,代码的第一部分没有改变,并且从那时起发布了许多更新,所有功能都正常(包括上周初的一个)

上面的代码部分根本没有改变!(尽管我个人对它的写作方式有想法!)

它正在调用的Sub已更改,但我在任何其他语句之前插入了一个msgbox,但它从未出现: 查看底部的新信息

单击按钮
AM_CreateSpreadsheet
时,您会看到msgbox警告您该过程需要一些时间,而
ACCSheet
第一行的msgbox永远不会执行

Sub acksheet()
中出现了一些更改,但由于它似乎没有执行此代码,因此不太可能是原因

新信息
Hans Passant的答案(不幸的是,他现在已经删除了它,或者我会将它标记为答案)给了我一个提示,所以我注释掉了所有添加的代码,确定问题消失了,问题部分原来是我在创建的电子表格中添加VBA的地方(是的,我已经进入并在目标计算机上打开了“对VBA项目对象模型的信任访问”)

让我困惑的是,这段代码是在try,catch中的,上面提到的msgbox是在try,catch之前的,不仅没有显示msgbox,而且语句catch部分的msgbox也没有显示。 (此外,该应用程序在某些XP 32位计算机上运行良好,但在其他计算机上运行不理想)

导致此代码的问题是:

Dim oModule As Vbe.Interop.VBComponent
Dim SCode As String
' Create a new VBA code module.
oModule = ExAccBk.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule)
        SCode = "Function SUMCOLOR(ColorCell As Range, SumRange As Range) As Variant" & vbCrLf & _
"Dim Cell As Range" & vbCrLf & _
"For Each Cell In SumRange" & vbCrLf & _
"If Cell.Interior.Color = ColorCell.Interior.Color Then" & vbCrLf & _
"SUMCOLOR = Cell + SUMCOLOR" & vbCrLf & _
"End If" & vbCrLf & _
"Next" & vbCrLf & _
"SUMCOLOR = SUMCOLOR" & vbCrLf & _
"End Function"
' Add the VBA macro to the new code module.
oModule.CodeModule.AddFromString(SCode)
我很想知道为什么这会引起问题,如何重新包括,最重要的是为什么它似乎没有运行

汉斯建议了一位背景工作人员,我将尝试一下,但如果有人能提供一个解释,我仍将不胜感激

最新信息

现在,我已经毫无优势地尝试了后台工作人员,@jcwrequests为我提供了查找原因的线索-是Excel版本导致了问题(适用于2010年,但不适用于2007年)

现在,我们将研究如何将VBA模块添加到Excel2007中

最终更新(希望如此)

现在这里有一个难题,我终于复活了一台旧笔记本电脑,上面有VS,在XP上运行Office 2007,并在调试中尝试了该程序,是的,它在调试中执行代码,但在同一台机器上不执行!!!如上所述,代码似乎无法执行


我将在这个问题上运行一个解决方案,但将继续关注线程,因此如果有人提出解决方案,我将很高兴听到!

我认为您的问题是您的应用程序需要设置为32位并重新构建,但这是假设您使用ADO.NET访问excel数据,因为没有64位驱动程序。您能证明吗ide更多信息。

不幸的是,情况并非如此(我在一些32位电脑上成功运行了该应用程序,但在其他电脑上失败了-我正在更新问题,因为我发现了更多信息。我觉得你很痛苦。使用Excel时经常遇到的问题是,根据版本的不同,你会得到不同的结果。因此,你可能会遇到最终用户机器上运行的版本问题。这个问题我已经见过一千次了。它在2003年有效,而不是2007年。你明白了。不管怎样,听起来都像是部署问题。
Public Sub ACCSheet()

    MsgBox("StartACC")

    'Some code

End Sub
Dim oModule As Vbe.Interop.VBComponent
Dim SCode As String
' Create a new VBA code module.
oModule = ExAccBk.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule)
        SCode = "Function SUMCOLOR(ColorCell As Range, SumRange As Range) As Variant" & vbCrLf & _
"Dim Cell As Range" & vbCrLf & _
"For Each Cell In SumRange" & vbCrLf & _
"If Cell.Interior.Color = ColorCell.Interior.Color Then" & vbCrLf & _
"SUMCOLOR = Cell + SUMCOLOR" & vbCrLf & _
"End If" & vbCrLf & _
"Next" & vbCrLf & _
"SUMCOLOR = SUMCOLOR" & vbCrLf & _
"End Function"
' Add the VBA macro to the new code module.
oModule.CodeModule.AddFromString(SCode)