【问题标题】:can't set PageSetup.Orientation = xlLandscape from MS Project无法从 MS Project 设置 PageSetup.Orientation = xlLandscape
【发布时间】:2010-12-08 17:22:52
【问题描述】:

在 MS Project 2003 中使用 VBA 我创建了一个 Excel 工作表并向其写入数据。 之后我想更改我创建的工作表的 SetPrintArea 和方向,所以我写了

with xlsheet                         '// Defined being an Excel.Worksheet
    For i = 1 To .UsedRange.Columns.Count
        .Columns(i).EntireColumn.AutoFit
    Next i
    txtPrintArea = txtPrintArea & "$" & xlCol.Row  '// I created the range to print before
    With .PageSetup
        .Orientation = xlLandscape
        .PrintArea = xlSheet.UsedRange.Address
    End With
End With

它在 .Orientation 语句处崩溃。 如果我将其注释掉,它会在 .PrintArea 行崩溃。 我的结论是它不能设置 .PageSetup 的任何属性

如何指定 PrintArea ?

【问题讨论】:

  • 如果你单步调试你的代码,你能在监视窗口中看到 xlSheet.PageSetup 上的 PrintArea 和 Orientation 属性吗?
  • 另外,您不需要代码中的循环来设置列宽。您可以只使用一行:.UsedRange.Columns.EntireColumn.AutoFit
  • .UsedRange.Columns.EntireColumn.AutoFit 确实更好。但是在我的“真实代码”中,我只需要 .UsedRange 的一部分,所以我只是从循环中删除了起始列以简化我在此处发布的代码。
  • 在监视窗口中我可以看到 xlSheet.PageSetup 我可以看到其属性的名称,但它显示“” 几乎所有属性都有类似的条目。如果查看 xlSheet.PageSetup.Application.Activeprinter :请参阅“未知打印机(检查您的控制面板)”我没有在这台 PC 上定义打印机,但这不应该有所作为 AFAIK
  • 嗯。如果在 PC 上安装打印机,有什么区别吗?

标签: excel vba ms-project page-setup


【解决方案1】:

我安装了 BullZip PDF 打印机,然后 .PageSetup.Orientation 工作。 所以看来 PageSetup 需要安装打印机。

【讨论】:

    【解决方案2】:

    你在做正确的事。

    为什么你设置了txtPrintArea却又设置了.PrintArea = xlSheet.UsedRange.Address ???

    否则您需要发布更多代码作为示例。我根据您的问题创建了以下内容,它对我有用:

    Set xlSheet = Sheet1
    Set xlCol = Sheet1.Rows(1)
    txtPrintArea = "A"
    With xlSheet                         '// Defined being an Excel.Worksheet
        xlSheet.UsedRange.Columns.EntireColumn.AutoFit
        txtPrintArea = txtPrintArea & "$" & Trim(Str(xlCol.Row)) + ":b2"   '// I created the range to print before
        With .PageSetup
            .Orientation = xlLandscape
            .PrintArea = txtPrintArea '//xlSheet.UsedRange.Address
        End With
    End With
    

    【讨论】:

    • 同样的问题:在.Orientation = xlLandscape txtPrintArea 没有被使用(由 UsedRange 交换)进行测试(避免由于 txtPrintArea 的错误定义而可能出现的问题)'更多代码'?不知道你缺少什么(当然xlSheet和xlCol在使用之前已经设置好了),就是不能设置xlSheet.PageSetup的属性
    • 你能运行我上面的例子吗?如果是这样,那么我会将您的代码简化为基本要素。如果你运行会发生什么: xlsheet.PageSetup.Orientation = xlLandscape ???
    • 我无法运行您的代码(崩溃)。 xlsheet.PageSetup.Orientation = xlLandscape 也没有什么区别
    猜你喜欢
    • 2018-11-02
    • 2021-11-01
    • 2022-07-07
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 2014-07-27
    相关资源
    最近更新 更多