Excel 另存为文件,不提示输入文件名

Excel 另存为文件,不提示输入文件名,excel,vba,Excel,Vba,我正在尝试创建一个没有任何用户界面的PDF文件,而不是单击Excel文件中的按钮 使用下面的代码,当文件要保存为自动生成的名称时,代码会提示输入文件名,而不是从代码中获取文件名 我觉得sendkeys不起作用 Sub PrinttoPDFTest() ActiveSheet.PageSetup.PrintArea = "$A$1:$F$17" With ActiveSheet.PageSetup .PrintTitleRows = "" .Pri

我正在尝试创建一个没有任何用户界面的PDF文件,而不是单击Excel文件中的按钮

使用下面的代码,当文件要保存为自动生成的名称时,代码会提示输入文件名,而不是从代码中获取文件名

我觉得
sendkeys
不起作用

Sub PrinttoPDFTest()

    ActiveSheet.PageSetup.PrintArea = "$A$1:$F$17"
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = "$A$1:$F$17"
    With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With

    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="Adobe PDF on Ne04:", Collate:=True

    newHour = Hour(Now())
    newMinute = Minute(Now())
    newSecond = Second(Now()) + 5
    waitTime = TimeSerial(newHour, newMinute, newSecond)
    Application.Wait waitTime

    Filename = "C:\Temp\PDF\" & ActiveSheet.Range("DateSerial").Value & ".pdf"

    SendKeys Filename & "{Enter}", False

End Sub

使用.ExportAsFixedFormat比使用.PrintOut更简单,只需堆叠您的请求(无需延迟代码):

只要替换目标和文件名,这段代码就可以正常工作。如果要将工作表中的值用作文件名的一部分,则可以如下连接(&):

Sheets("Sheet1").ExportAsFixedFormat xlTypePDF, "C:\Folder\" & Range("P10").Value & ".pdf"
或者将文件名存储在变量中,并按以下方式执行:

dim filename as string

filename = Range("P10").Value

Sheets("Sheet1").ExportAsFixedFormat xlTypePDF, filename

而且它会继续下去……

使用.ExportAsFixedFormat比.PrintOut更简单,只需堆叠您的请求(无需延迟代码):

只要替换目标和文件名,这段代码就可以正常工作。如果要将工作表中的值用作文件名的一部分,则可以如下连接(&):

Sheets("Sheet1").ExportAsFixedFormat xlTypePDF, "C:\Folder\" & Range("P10").Value & ".pdf"
或者将文件名存储在变量中,并按以下方式执行:

dim filename as string

filename = Range("P10").Value

Sheets("Sheet1").ExportAsFixedFormat xlTypePDF, filename

它会继续下去……

看看这里:谢谢你,雷菲,这很有效!谢谢好的,作为答案发布。谢谢。看看这里:谢谢你,真的,这成功了!谢谢好的,作为答案发布。谢谢。谢谢你,Rob,我刚刚测试了你的代码,我得到了:运行时错误“438”:对象不支持此属性或方法。我需要使用的引用的名称是什么?Thxagred ExportAsFixedFormat允许您避免打印到PDF时需要的最后一步。但是,导出PDF的大小是通过打印创建的PDF大小的四倍。当我打印成pdf时,我得到的文件大小是22kp,当我保存为pdf时,我得到的文件大小是84。sice我们在电子邮件中添加了大量PDF。这种差异可能会导致电子邮件发送量过大。感谢您的帮助,Rob,我刚刚测试了您的代码,我发现:运行时错误“438”:对象不支持此属性或方法。我需要使用的引用的名称是什么?Thxagred ExportAsFixedFormat允许您避免打印到PDF时需要的最后一步。但是,导出PDF的大小是通过打印创建的PDF大小的四倍。当我打印成pdf时,我得到的文件大小是22kp,当我保存为pdf时,我得到的文件大小是84。由于我们在电子邮件中附加了大量PDF格式,因此差异会导致电子邮件发送量过大。