高手们好,下面涉及到两个问题,一个是“另存为”功能的实现,还有一个就是“打印”,昨天 Tiger_zhao以帮我实现了“另存为”功能,但是“打印”还是个摆设
1.要求很简单,点击打印后text内的值先被读到A.xls,不关闭A也不存储,然后跳出一个选择打印机的界面(还要添加什么控件么,请明示),最后点击确定,在打印命令发送到打印机的同时关闭A.xls,整个过程并没有存储A.xls

text1(0)    text1(13)    text1(23)    text1(33) 
text1(1)    text1(14)    text1(24)    text1(34) 
text1(2)    text1(15)    text1(25)    text1(35) 
text1(3)    text1(16)    text1(26)    text1(36) 
text1(4)    text1(17)    text1(27)    text1(37)  |-------|  |-------| 
text1(5)    text1(18)    text1(28)    text1(38)  | 另存为 |  |打  印 |  (分别为option1 option2) 
text1(6)    text1(19)    text1(29)    text1(39)  |-------|  |-------| 
text1(7)    text1(20)    text1(30)    text1(40) 
text1(8)    text1(21)    text1(31)    text1(41) 
text1(9)    text1(22)    text1(32)    text1(42) 
text1(10)    
text1(11)    
text1(12) 描述: 1.上面一大堆内容是我的窗体界面,有N个textbox和两个按钮,textbox(0-42)里面现在都有值,而且这些值已被设置为"只 读"(enabled=false). 这些值实际上是我从某个excel表B.xls中读取的计算结果。 2.标题提到的A.xls是一个样表,他和工程同在一个目录下,此表里面都是些汉字:"压力",“温度”,“开孔”等等....而textbox(0-42)里面的值正是经计算得出的:"压力",“温度”,“开孔”等的具体数值,如果把这些具体数值填到表A里面的相应位置,就组成了一个完整的计算结果表。 3.我的本意不是单纯的把textbox(0-42)内的值保存到A.xls里面,我只是想利用A的格式,我用事件过程说一下就清楚了 事件: 点击"另存为": 出现"另存为"的那个专用窗体-----------填写好文件名称和选择.xls格式以及存放位置,然后点击保存------------VB程序打开A.xls并将textbox(0-42)内部数据填写到A.xls的"A3","B5","C2","K9"...等相应43个框格里面,然后将A.xls按上一步骤的路径要求保存一份,然后关闭A.xls(此过程并没有将数据保存在A内),这样我就得到了一份新的计算结果表,同时A没有变化。 关键:text1(12)是一个关键的地方,text1(12)为>=1的整数, 
  当text1(12)>=10时候,textbox(0-42)内的所有数值都要按上面的事件过程进行保存。 
  当text1(12)=9的时候text(22),text(32),text(42) 这3个值被抛弃(即按""保存),其它照常。 
  当text1(12)=8的时候text(22),text(32),text(42) 这6个值被抛弃(即按""保存),其它照常。 
                      text(21),text(31),text(41) 
  当text1(12)=7的时候text(22),text(32),text(42) 这9个值被抛弃(即按""保存),其它照常。 
                      text(21),text(31),text(41) 
                    text(20),text(30),text(40) 
  当text1(12)=6的时候text(22),text(32),text(42) 这12个值被抛弃(即按""保存),其它照常。 
                      text(21),text(31),text(41) 
                    text(20),text(30),text(40) 
                    text(19),text(29),text(39) 
    ................................................................ 
    当text(12)=1的时候text(0-12)加上text(13),text(23),text(33)照常进行,其它都被抛弃(即按""保存) 最后一点:"打印",也同样是先将数据放到A.xls里面,然后打印一份,再关闭A(还是不保存A),当然也受Text(12)的变化影响,影响规则同上。 

解决方案 »

  1.   

    由于我没有打印机 所以打印测试不了..你自己试一下拉.
    '在你的程序保存好数据后,点击打印 打出来的就是刚保存的数据
    Private Sub Command2_Click() '保存按钮
        Set ex = CreateObject("Excel.Application")
        Set wb = ex.Workbooks.Open(CommonDialog1.FileName)   ' 你的A文件
        Set sh = wb.Sheets(1)
        
       ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True '注是 直接使用上次打印样式
       wb.Close SaveChanges:=False    '直接关闭不保存
        ex.Quit
        Set ex = Nothing
        Set wb = Nothing
        Set sh = Nothing
    End Sub
      

  2.   

    用 Microsoft Common Dialog Control 6.0
    Private Sub Command1_Click()
        On Error GoTo ErrHandler    CommonDialog1.CancelError = True
        CommonDialog1.PrinterDefault = True '选取影响默认打印机'
        CommonDialog1.ShowPrinter
        
        ...
        sh.PrintOut '如果打印机选取不起作用,加上参数 ActivePrinter:=Printer.DeviceName
        ...
    ExitEntry:
        Exit Sub
    ErrHandler:
        If Err.Number <> 327555 Then
            MsgBox Err.Description, vbCritical
        End If
        Resume ExitEntry
    End Sub