none
VB2008 如何列印Excel檔案內容 RRS feed

  • 問題

  • 小弟想要利用VB程是將資料內的EXCEL檔直接列印出來!這是小弟的語法

      Dim exl_app As New Excel.Application
            Dim exl_wkb As Excel.Workbook
            Dim exl_wks As Excel.Worksheet
            exl_wkb = exl_app.Workbooks.Open(FileName, ,False)         
    exl_wks = exl_wkb.Worksheets(1)                 
    With exl_wks
                         For i As Integer = 0 To 7
                    For ix As Integer = 0 To 32
                        .Cells(ix + 4, i + 4) = D_Table.Rows(i).Item(ix)
                    Next
                Next
            End With
            exl_app.SaveWorkspace()
            Dim printDoc As New PrintDocument()
            Dim sDefaultPrinter As String = printDoc.PrinterSettings.PrinterName
            For Each strPrinter As String In PrinterSettings.InstalledPrinters
                Me.ListBox1.Items.Add(strPrinter)
            Next
            Me.ListBox1.SelectedIndex = Me.ListBox1.FindString(sDefaultPrinter)
            Dim Print_Work As New Excel.ApplicationClass
            Print_Work.ActivePrinter = sDefaultPrinter
            exl_wkb = exl_app.Workbooks.Open(FileName, , False)
            exl_wks = exl_wkb.Worksheets(1)
            exl_wks.Activesheet.Printout()
            exl_app.Visible = True
            exl_wks = Nothing
            exl_wkb.Close()
            exl_wkb = Nothing
            exl_app.Quit()
            exl_app = Nothing
            My.Computer.FileSystem.DeleteFile("C:\Documents and Settings\SONG DING\My Documents\RESUME.XLW")
            GC.Collect()
         
    

    程式異常中斷點:Print_Work.ActivePrinter = sDefaultPrinter

    異常訊息:發生例外狀況於 HRESULT: 0x800A03EC

    請教各位大大 在列印的部分該如何使用?


    新手上路
    • 已編輯 eblue 2011年11月2日 下午 12:51
    2011年11月2日 下午 12:50

解答

  • 您好

    1. 您以下兩行跟 PrintOut 列印沒有扯上關係,是不是直接拿掉比較快

    Dim Print_Work As New Excel.ApplicationClass
    Print_Work.ActivePrinter = sDefaultPrinter

    2. 把 exl_wks.Activesheet.Printout() 改成

    exl_wks.PrintOut(Type.Missing, Type.Missing, Type.Missing, Type.Missing, sDefaultPrinter, Type.Missing, Type.Missing, Type.Missing)


    歡迎參觀我的Blog.NET菜鳥自救會


    2011年11月2日 下午 01:21
    版主

所有回覆

  • 您好

    1. 您以下兩行跟 PrintOut 列印沒有扯上關係,是不是直接拿掉比較快

    Dim Print_Work As New Excel.ApplicationClass
    Print_Work.ActivePrinter = sDefaultPrinter

    2. 把 exl_wks.Activesheet.Printout() 改成

    exl_wks.PrintOut(Type.Missing, Type.Missing, Type.Missing, Type.Missing, sDefaultPrinter, Type.Missing, Type.Missing, Type.Missing)


    歡迎參觀我的Blog.NET菜鳥自救會


    2011年11月2日 下午 01:21
    版主
  • 你的應用程式跟 Automation 是兩個獨立的 process ,你的應用程式中變更 PrintDocument 與 Automation 的印表機並不直接關聯。

    而兩個物件記憶體模型不相等,你也不能讓他直接相等... 

    也就是你錯誤訊息發生處。

     

    程式語言是一個蘿蔔一個坑,拿西瓜塞蘿蔔坑是很有問題的動作。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

     

    2011年11月2日 下午 01:50
  • 謝謝小歐ou大大的幫忙!目前列印OK了

    心冷大說的小弟會注意這方面的問題,是小弟誤解列印功能的用法


    新手上路
    2011年11月3日 上午 06:49