【问题标题】:Export As A Fixed Format Excel 2007导出为固定格式 Excel 2007
【发布时间】:2017-07-07 06:34:26
【问题描述】:

我的任务是开发一个供整个办公室使用的 Excel 文档。用户将单击一个按钮,宏会将文件作为 PDF 导出到共享文件夹。我编写了这段代码并使用 excel 2010 测试了这段代码。拥有 excel 2007 的人收到一条错误消息,提示“运行时错误 1004 文档未保存。此文档可能已打开,或者保存时可能遇到错误。”我稍微研究了一下这个问题,发现 excel 2007 需要一个插件更新,所以我在他们的电脑上安装了它。我还检查了他们的计算机上是否有 adobe,他们确实有。他们仍然有问题,我不确定该怎么做。任何帮助将不胜感激!

这是我的代码

' Define all variables
    Dim strFileName As String
    Dim folder As String
    Dim member As Integer
    Dim member_count As Integer
    Dim member_name As String
    Dim show As Variant
    Dim MyTime As String

'Save as new file
        Worksheets("Input data").Visible = True
        folder = Sheets("Input data").Range("location").Value
        MyTime = Time
        Sheets("Input data").Select
        Range("G2").Value = MyTime
        strFileName = folder & "Material Request - " & Sheets("Input data").Range("name").Value & "_" & Sheets("Input data").Range("date").Value & " " & Sheets("Input data").Range("time").Value & ".pdf"
        Sheets("Material Request").Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName 'OpenAfterPublish:=True`

【问题讨论】:

    标签: vba pdf excel


    【解决方案1】:

    您应该首先更改代码以删除 .Select.ActiveSheet 实例。

    Dim oWS as Worksheet
    Set oWS = ThisWorkbook.Worksheets("Input data")
    '    Worksheets("Input data").Visible = True
        folder = oWS.Range("location").Value
        If Right(folder,1) <> Application.PathSeparator Then folder = folder & Application.PathSeparator
        MyTime = Time
    '    Sheets("Input data").Select
        oWS.Range("G2").Value = MyTime
        strFileName = folder & "Material Request - " & oWS.Range("name").Value & "_" & oWS.Range("date").Value & " " & oWS.Range("time").Value & ".pdf"
    Debug.Print "strFileName: " & strFileName
        'Sheets("Material Request").Select
        oWS.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName 'OpenAfterPublish:=True`
    Set oWS = Nothing
    

    参考此MSDN Worksheet.ExportAsFixedFormat Method,您可能需要根据工作表“输入数据”的属性填写更多参数。

    我添加了一些检查并参考即时窗口来检查 2007 年 strFileName 的值。

    【讨论】:

    • 您好,PatricK,感谢您查看我的代码。所以我厌倦了你的修改版本,但我仍然没有运气。
    • 如果它不是一个完整的代码发布,你可以通过选择sub然后在VBEditor中按F8逐步进入宏吗?它会抛出哪一行错误?立即窗口中的 strFileName 得到什么输出?
    • 当我运行宏这一行时,oWS.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFileName, 抛出错误。当我将鼠标悬停在 xlTypePDF=0 并且 strFileName 为 "\\FLEX_SHARED\FLEx Shared\Engineering\Materials Request\Approved
    • 看来 strFileName 不完整导致它抛出错误。 oWS.Range("name").ValueoWS.Range("date").ValueoWS.Range("time").Value 有什么价值?其中之一应该导致 strFileName 停止连接。
    • 感谢您的帮助PatricK 我能够找到问题!你最好!
    【解决方案2】:

    我遇到了类似的问题(尝试导出时出现错误 1004)。拔掉头发一个小时后,这就是我问题的根源。

    我在生成文件名的过程中传递了一个单元格值。我以

    的格式执行此操作
    fileName:= ActiveWorkbook.Path & "\" & CStr(Workbooks.Cells(i,j).Value) & ".pdf"
    

    单元格本身的文本被格式化为两行(即“顶行文本”+(Alt+K)+“底行文本”) .虽然字符串在Debug.printMsgBox 或值预览中看起来很正常,但我认为有一个隐藏字符对单元格的新行进行编码。我相信这个隐藏字符在作为 fileName 参数的一部分传递时会导致错误。我猜 Excel 不会选择它,但操作系统的文件名系统会。

    无论如何,这为我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 2012-05-04
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 2018-04-18
      相关资源
      最近更新 更多