Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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
Excel到pdf命令行宏-对象不';不支持此属性或方法错误438_Excel_Vba - Fatal编程技术网

Excel到pdf命令行宏-对象不';不支持此属性或方法错误438

Excel到pdf命令行宏-对象不';不支持此属性或方法错误438,excel,vba,Excel,Vba,我目前正在构建一个宏,用于将excel工作表(xls或xlsx)导出为pdf文件。我想这样调用宏: cmd.exe /C "C:/[...]excel.exe" /e /q C:/[...]/MacroFile.xlsm /a C:/[...]/filetobeconverted.xls 这就是我目前所拥有的 Option Explicit Public Sub Excel2Pdf() Dim sPDFFilename As String Dim Newfilename As String

我目前正在构建一个宏,用于将excel工作表(xls或xlsx)导出为pdf文件。我想这样调用宏:

cmd.exe /C "C:/[...]excel.exe" /e /q C:/[...]/MacroFile.xlsm /a C:/[...]/filetobeconverted.xls
这就是我目前所拥有的

Option Explicit

Public Sub Excel2Pdf()

Dim sPDFFilename As String
Dim Newfilename As String
    'Application.Workbooks.Open sFilename
    Newfilename = (Replace(ActiveSheet.FullName, ".xls", ".pdf"))
    Newfilename = (Replace(Newfilename, ".xlsx", ".pdf"))

  ActiveSheet.ExportAsFixedFormat Newfilename, xlTypePDF
  ActiveSheet.Close
  Application.Quit

End Sub
然而,我得到:

运行时错误“438:对象不支持此属性或方法”


正确方向上的每一次轻推都是值得赞赏的。

代码中的两个问题导致
438
错误:

  • ActiveSheet
    不支持
    Close
    方法。因此,这里的这一行-
    ActiveSheet.Close会导致错误。删除它,它会工作得很好

  • ActiveSheet
    没有
    FullName
    属性。它有
    .Name

要在VBEditor中使用内置的intellisense,请将工作表声明为变量,然后按Ctrl+Space。然后会出现这样的情况:


也不支持
FullName
如果要关闭它,可以写:ActiveSheet.Parent.close这解决了问题。但是,它会打印到OneNote而不是PDF。你知道为什么吗?@maRei-恭喜你!现在,您可以考虑将答案标记为“接受”。对于这个问题-我猜电脑的设置是OneNote默认以
.pdf
扩展名打开文件?尝试使用acrobat打开“打印”文件,查看它是否为pdf文件。