Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
通过Access 2013 VBA编辑Excel 2013文件后,无法打开该文件_Vba_Ms Access_Excel - Fatal编程技术网

通过Access 2013 VBA编辑Excel 2013文件后,无法打开该文件

通过Access 2013 VBA编辑Excel 2013文件后,无法打开该文件,vba,ms-access,excel,Vba,Ms Access,Excel,我正在使用Access数据库,其中有一个按钮,单击该按钮时,会将文件复制到模板excel文件,然后打开新副本,设置两个单元格的值,然后保存并关闭它。另一个按钮执行完全相同的操作,但紧接着调用另一个子按钮来打印新文件 我遇到的问题是,我无法在Excel中打开这些已编辑的文件。它们通过access VBA代码打印时没有任何问题,这意味着它确实会被编辑、保存,然后打印。但当我双击其中一个文件时,excel会启动,但该文件根本不会打开。没有桌子了。如果我已经在Excel中打开了一个文件,右键单击其中一个

我正在使用Access数据库,其中有一个按钮,单击该按钮时,会将文件复制到模板excel文件,然后打开新副本,设置两个单元格的值,然后保存并关闭它。另一个按钮执行完全相同的操作,但紧接着调用另一个子按钮来打印新文件

我遇到的问题是,我无法在Excel中打开这些已编辑的文件。它们通过access VBA代码打印时没有任何问题,这意味着它确实会被编辑、保存,然后打印。但当我双击其中一个文件时,excel会启动,但该文件根本不会打开。没有桌子了。如果我已经在Excel中打开了一个文件,右键单击其中一个文件并选择“打印”,则会打印上一张Excel工作表

以下是复制模板然后继续编辑副本的Access VBA sub:

Private Sub SaveXLFile(FileNameFull As String)
'FileNameFull: Complete path for file to be saved, including extension.

Dim ExcelApp As Excel.Application
Dim ExcelBook As Excel.Workbook
Dim ExcelSheet As Excel.Worksheet

Dim fso As Object

'copy template
Set fso = VBA.CreateObject("Scripting.FileSystemObject")
fso.CopyFile ThePath & "Arbetsorder - Blankett.xlsx", FileNameFull


Set ExcelBook = GetObject(FileNameFull)
Set ExcelApp = ExcelBook.Parent
Set ExcelSheet = ExcelBook.Worksheets(1)
'we are open and ready for action!


'take values from form and put them in the correct places
ExcelSheet.Range("C2").Value = [Kund]

'edit page 2
'Set ExcelSheet = ExcelBook.Worksheets(2)
'ExcelSheet.Range("B31").Value = [TB_Tid_Ställ]


ExcelBook.Close savechanges:=True
Set ExcelSheet = Nothing
Set ExcelBook = Nothing
Set ExcelApp = Nothing
End Sub
打印代码如下:

Private Sub PrintXLFile(FileNameFull As String)
'opens an excel file and prints it.
'FileNameFull: Complete path to file, including extension.
Dim ExcelApp As Excel.Application
Dim ExcelBook As Excel.Workbook
Dim ExcelSheet As Excel.Worksheet

Set ExcelBook = GetObject(FileNameFull)
Set ExcelApp = ExcelBook.Parent
Set ExcelSheet = ExcelBook.Worksheets(1)

ExcelSheet.PrintOut Copies:=1, Collate:=True
ExcelBook.Sheets(2).PrintOut Copies:=1, Collate:=True

ExcelBook.Close savechanges:=False 'close without changes
Set ExcelSheet = Nothing
Set ExcelBook = Nothing
Set ExcelApp = Nothing
End Sub
…并且实际按钮单击的子对象在任何方面都不阴暗:

Private Sub KnappPrint_Click()
Dim NewFileNameWExt As String

NewFileNameWExt = [I-Order] & ".xlsx"
SaveXLFile (ThePath & "Arbetsordrar\" & NewFileNameWExt)
PrintXLFile (ThePath & "Arbetsordrar\" & NewFileNameWExt)
End Sub
我做错了什么?我试着只编辑第一张工作表,以防在切换工作表时出错,但这并没有解决问题


更令人困惑的是,当KnappPrint\u Click运行时,它可以很好地打印,但在资源管理器中右键单击文件并选择“打印”却没有任何作用。

工作表出现问题的原因是如何打开工作簿。尝试将Excel应用程序和工作簿分配更改为:

Set ExcelApp = CreateObject("Excel.Application")
Set ExcelBook = ExcelApp.Workbooks.Open(str)
Set ExcelSheet = ExcelBook.Worksheets(1)

对于op,我总是警告不要使用工作表1。过去它只给我带来了痛苦。我的建议是在自动化时完全限定工作表名称。谢谢,这很有效!我仍然完全不明白为什么我可以用我的子PrintXLFile打印文件,但不能通过正常方式打印。