Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
Vba Excel 2013中的VB6摘录_Vba_Excel_Vb6_Excel 2013 - Fatal编程技术网

Vba Excel 2013中的VB6摘录

Vba Excel 2013中的VB6摘录,vba,excel,vb6,excel-2013,Vba,Excel,Vb6,Excel 2013,我有一些应用程序是用遗留的VB6编写的,它们内置了提取代码来创建EXCEL提取。我们正在从Excel 2007过渡到Excel 2013,我遇到了一些问题。我正在运行Windows 10。在2007年,这是我的声明和Set语句,它们过去工作得很好 Option Explicit Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheetA As Excel.Worksheet 我在模块顶部有这些 在我写数据提取

我有一些应用程序是用遗留的VB6编写的,它们内置了提取代码来创建EXCEL提取。我们正在从Excel 2007过渡到Excel 2013,我遇到了一些问题。我正在运行Windows 10。在2007年,这是我的声明和
Set
语句,它们过去工作得很好

Option Explicit
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheetA As Excel.Worksheet
我在模块顶部有这些

在我写数据提取的函数中,我这样做

Set xlApp = New Excel.Application
Set xlBook = XlApp.Workbooks.Add
Set xlSheetA = xlBook.Worksheets.Add
当它到达XLBook时,它会挂断,一切都停止工作。我得到一个错误:

此操作无法完成,因为其他程序正忙。选择“切换到”以激活繁忙程序并纠正问题

现在,在运行提取之前,我要确保Excel没有在后台运行,要进行检查,请转到任务管理器->流程,如果有,则将其删除。我做错了什么?我应该如何更改代码

编辑屏幕截图:屏幕截图不显示我在应用程序中的代码。这是一个新项目,只是为了显示我正在使用的所有代码。

很久以前,我也遇到过类似的问题。不确定这是否与您的情况有关。 我的代码正在更新一个打开的excel,其中有一个单元格处于编辑模式。在尝试了许多可能性之后,我关闭了屏幕更新和可见性,直到代码完成。类似于 xlApp.screenUpdate=False
xlApp.Visible=False

您的function1位于一个私有sub中,应作为函数调用。显示的代码和屏幕截图也不同。我创建了一个快速示例,它在Excel 2013中运行良好。将sub更改为function

Option Explicit

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheetA As Excel.Worksheet

Private Function function1()

Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Add
Set xlSheetA = xlBook.Worksheets.Add

Set xlSheetA = xlBook.Sheets.Item(1) ''the sheet you want to use

xlApp.Visible = True

xlApp.ActiveSheet.Cells(1, 1).Value = "TEST"

xlApp.Workbooks.Close

MsgBox "Excel Done"
End Function

Private Sub Command3_Click()

Call function1
End Sub
希望这有帮助

编辑:见下面的截图,工作正常


为了澄清,代码是VB6应用程序中的VB6代码,引用Excel对象模型?如果是这种情况,那么我认为[vba]和[Excel vba]标签是令人困惑的东西。在将其设置为
Nothing
后如何关闭它?请在
set xlApp=New Excel.Application
之后立即尝试设置
xlApp.Visible=True
,然后查看Excel是否挂起在某个弹出/对话框上。@Comintern-我不知道-我保存它,然后关闭它,然后设置为Nothing可能我需要告诉它运行立即打开电子表格-因为当我最初打开它时,它会转到最近的文档-因此它无法添加工作簿,这只是一个想法?不幸的是,这无助于它。我看到了你正在做的事情。这里的问题是,一旦它碰到行set xlapp=new excel.application with office 2013-它不会给它一个值,在2007年我运行它时当我用鼠标悬停在xlAPP上时,它会变成“MICROSOFT EXCEL”,它不会说什么。还要确保你引用了最新的MICROSOFT EXCEL对象库,就像你提到的那样,你只有1个。为了澄清一点,开关错误与调用另一个子函数(不是函数)有关当前sub仍在尝试执行某些进程或命令。我使用的是SP6,引用了Microsoft Excel 16对象库。上面的确切代码将打开Excel“测试”“位于第1列/第1行,它想结束请求我保存工作簿。您是否有其他错误或仍然相同?请参阅上面的屏幕截图,工作正常。。。即使是15号物体,它也能正常工作。尝试以与我的代码完全相同的方式运行它,看看它是否有效。您是否以管理员身份运行VB6?在Windows7上,如果不作为管理员使用,它将崩溃。