关于VBA,求万能妖哥HELP

孟豆豆 2014-09-24 12:12:38
BCB操作EXCEL,创建、写入、读取调整格式之类的操作我都在网上查到了,可就是没有关于打印部分如何使用的例子。
比如我生成一张EXCEL表报表之后想直接打印出来,该如何编程操作啊,我也录了宏,可惜看不懂,求万能妖哥帮帮忙!
...全文
216 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟豆豆 2014-10-15
  • 打赏
  • 举报
回复
引用 10 楼 ccrun 的回复:
我一般是在Word或Excel的查看宏功能里面按F2查阅。
狂谢妖哥!
ccrun.com 2014-10-15
  • 打赏
  • 举报
回复
我一般是在Word或Excel的查看宏功能里面按F2查阅。
孟豆豆 2014-10-15
  • 打赏
  • 举报
回复
引用 8 楼 ccrun 的回复:
加断点,看看是在 ActivePrinter 和 PrintOut 这两行的哪一行出的错?
额,我试了下

Variant     Excel;
Variant     ExcelBook;
Variant     ExcelSheet;

Excel   = Variant::CreateObject( "Excel.Application" );

Excel.OlePropertySet( "Visible", false );
ExcelBook   = Excel.OlePropertyGet( "workbooks" );
ExcelSheet  = ExcelBook.OleFunction( "add" );
ExcelBook   = Excel.OlePropertyGet( "ActiveWorkBook" );
ExcelSheet  = ExcelBook.OlePropertyGet( "ActiveSheet" );

String strPrinterName = "Adobe PDF 在 Ne03:";
Excel.OlePropertyGet( "Application" ).OlePropertySet( "ActivePrinter", WideString( strPrinterName ) );
ExcelSheet.OleFunction( "PrintOut" );
我这样做就是对的。我把 ExcelSheet.OleFunction( "PrintOut" ); 改成 ExcelSheet.OleFunction( "PrintOut", EmptyParam, //From EmptyParam, // To 1, // Copies:=1, EmptyParam, // Preview WideString( strPrinterName ), // ActivePrinter:= "Adobe PDF 在 Ne03:", EmptyParam, // PrintToFile true, // Collate:=True EmptyParam // PrToFileName ); 实现的是打印预览功能…… 后来我查资料,预览可以这样写 ExcelSheet.OleFunction( "PrintPreview", true ); 太多样化了,妖哥,这些函数的定义在哪能查到啊,我也想学宏代码转换成C++
孟豆豆 2014-10-14
  • 打赏
  • 举报
回复
我把选择打印机这个跳过,函数那用EmptyParam代替,执行起来也是“未知名称”
孟豆豆 2014-10-14
  • 打赏
  • 举报
回复
引用 4 楼 ccrun 的回复:
#include <olectrls.hpp>

String strPrinterName = "Adobe PDF 在 Ne03:";
vExcelApp.OlePropertyGet("Application").OlePropertySet("ActivePrinter", WideString(strPrinterName));

vExcelApp.OlePropertyGet("Application").OlePropertyGet("SelectedSheets").OleFunction("PrintOut",
        EmptyParam,  //From
        EmptyParam,  // To
        1,           // Copies:=1,
        EmptyParam,  // Preview
        WideString(strPrinterName), // ActivePrinter:= "Adobe PDF 在 Ne03:",
        EmptyParam,  // PrintToFile
        true,        // Collate:=True
        EmptyParam   // PrToFileName
        );
妖哥,我试了下,在执行最后的函数那种报错,说“未知名称”,我用的是CB2010,求教
ccrun.com 2014-10-14
  • 打赏
  • 举报
回复
加断点,看看是在 ActivePrinter 和 PrintOut 这两行的哪一行出的错?
wryyu 2014-10-13
  • 打赏
  • 举报
回复
妖哥威武
ccrun.com 2014-09-24
  • 打赏
  • 举报
回复
你把宏代码贴上来我看看。
ccrun.com 2014-09-24
  • 打赏
  • 举报
回复
#include <olectrls.hpp>

String strPrinterName = "Adobe PDF 在 Ne03:";
vExcelApp.OlePropertyGet("Application").OlePropertySet("ActivePrinter", WideString(strPrinterName));

vExcelApp.OlePropertyGet("Application").OlePropertyGet("SelectedSheets").OleFunction("PrintOut",
        EmptyParam,  //From
        EmptyParam,  // To
        1,           // Copies:=1,
        EmptyParam,  // Preview
        WideString(strPrinterName), // ActivePrinter:= "Adobe PDF 在 Ne03:",
        EmptyParam,  // PrintToFile
        true,        // Collate:=True
        EmptyParam   // PrToFileName
        );
孟豆豆 2014-09-24
  • 打赏
  • 举报
回复
Sub Macro1() ' ' Macro1 Macro ' 宏由 Windows 用户 录制,时间: 2014/9/24 ' ' Application.ActivePrinter = "Adobe PDF 在 Ne03:" ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ "Adobe PDF 在 Ne03:", Collate:=True End Sub 这是我又添加了打印机选择(我选的是PDF打印机)的宏代码
孟豆豆 2014-09-24
  • 打赏
  • 举报
回复
引用 1 楼 ccrun 的回复:
你把宏代码贴上来我看看。
Sub Macro2() ' ' Macro2 Macro ' 宏由 Windows 用户 录制,时间: 2014/9/24 ' ' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧