2011年6月22日 星期三

#excel word 巨集

存檔有點問題,
SaveAs(路徑)
卻沒存進去檔案

===============================================
碰到說
巨集格式都寫出來,也能跑
但是存檔卻沒有將所有格式都存進去的奇怪問題

大概知道是存檔類型的問題
應該說看能不能設定存檔的類型,
是 .xls 檔案文件
這樣就可以解決問題

我想可能跟我一開始建立的 Excel 檔案並不是 真的 xlWorkbookNormal 格式的檔案
所以後來開啟在存檔,變成沒辦法轉檔
看能不能一開始寫資料的時候就是建立 xlWorkbookNormal 格式的檔案,去寫 .xls 檔


還是應該想方式去轉檔比較快的樣子
在查一查

WorkbookBase.FileFormat 屬性

關於VB.NET匯出Excel


Worksheet.SaveAs 方法

http://msdn.microsoft.com/zh-tw/library/microsoft.office.tools.excel.worksheet.saveas.aspx


最後透過直接建立WorkBook,建立Sheet,寫入資料
一開始就存成Excel格式解決
不然本來是用WriteStream,寫入,會變成格式是文字檔
再來就變成要處理轉檔成Excel格式
這方面應該有方法
但我不會
要再查一查
===================================================

如何使用VB.net Express執行Office中的VBA Code.

別忘了"Imports Microsoft.Office.Interop",沒引入這個NameSpace可是沒辦法動作的~

其範例節錄如下(以Excel為例)
'建立 Excel App 去跑  
'建立 WorkBooks 去開 Excel 檔案 ( book1.xls )

Dim oExcel As Excel.ApplicationClass
Dim oBook As Excel.WorkbookClass
Dim oBooks As Excel.Workbooks

'Start Excel and open the workbook.
oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
oBooks = oExcel.Workbooks
oBook = oBooks.Open("c:\book1.xls")

'Run the macros. <= 重點在這邊
 '第一個為sub名稱,第二個為要傳遞的參數
oExcel.Run("DoKbTestWithParameter", "Hello from VB .NET Client")

'Clean-up: Close the workbook and quit Excel.
'做一些清空的動作
oBook.Close (False)
System.Runtime.InteropServices.Marshal.ReleaseComObject (oBook)
oBook = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject (oBooks)
oBooks = Nothing
oExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject (oExcel)
oExcel = Nothing


===================================================

如何使用 Visual Basic.NET 的自動化執行 Office 的巨集

http://support.microsoft.com/kb/306682/zh-tw


第一步:加入EXCEL.EXE當參考,基本上跟上一篇一模一樣,請參考[C# .Net] Microsoft.Office.Interop.Excel 讀 / 寫 Excel 語法概全
第二步:引用Microsoft.Office.Interop.Excel命名空間
Imports Microsoft.Office.Interop.Excel

第三步:引用Excel類別


'用於存放Microsoft Excel 引用的變數。 
Public xlApp As Application
Public xlBook As Workbook
Public xlSheet As Worksheet
Public xlRange As Range



第四步:為專案引用Excel,開啟 / 不開啟 一個新的Excel
   On Error Resume Next
'#一部電腦僅執行一個Excel Application, 就算中突開啟Excel也不會影響程式執行
'#在工作管理員中只會看見一個EXCEL.exe在執行,不會浪費電腦資源
'#引用正在執行的Excel Application
xlApp = GetObject(, "Excel.Application")
'#若發生錯誤表示電腦沒有Excel正在執行,需重新建立一個新的應用程式
If Err.Number() <> 0 Then
Err.Clear()
'#執行一個新的Excel Application
xlApp = CreateObject("Excel.Application")
If Err.Number() <> 0 Then
MsgBox("電腦沒有安裝Excel")
End
End If
End If



第五步:快樂使用Excel

================================================
好像不能說直接呼叫 Excel 巨集
不然就是我不會

可以直接把巨集Code直接貼上
要再改一些東西
改什麼要再查一查
應該就可以寫入並且跑巨集的東西

為什麼將Excel的巨集code加入vb.net後


==============================================================
注意宣告變數時候
還有使用上的方式
一些 Excel 上的參數
透過 Excel 的物件去看說 那個參數代表的數值是多少

1. 先 Select
2. 然後再 透過 with xlBook.Sheets(1).Application.Selection.XXXXX
   去做一些動作上的設定
3. END With



xlBook.Sheets(1).Cells.Select()
        With xlBook.Sheets(1).Application.Selection.Font
               .XXX = x
               .XXX = x
        END with


====================================================
有關Excel 執行自動SAVE巨集時,會出現檔名為亂碼但內容相同的檔案問題
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20101114105259J9F&fumcde=FUM20060608180224R4M


有產生 Excel 暫存檔的東西,
必要時應該用的到


===============================================
ASP.NET 使用 Excel
有整個流程 
或許有參考價值
http://www.blueshop.com.tw/board/show.asp?subcde=BRD2005122921505367J


========================================================
將Excel 當成DB 來做匯出
http://itgroup.blueshop.com.tw/ZEasyChen/IT?n=convew&i=168884

沒有留言:

張貼留言