高手们好,下面涉及到两个问题,一个是“另存为”功能的实现,还有一个就是“打印”,昨天 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.要求很简单,点击打印后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)的变化影响,影响规则同上。
'在你的程序保存好数据后,点击打印 打出来的就是刚保存的数据
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
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