作者rex921 (小雷)
看板Visual_Basic
標題[VB6 ] 請教巨集重覆執行的問題
時間Tue May 10 15:42:01 2016
各位前輩好!!
小弟目前遇到的問題: 將MSFlexGrid的內容轉存成excel檔案
下面為片段程式碼
*------
Dim objExcelApp As Excel.Application
Dim objSheet_VAC As Excel.Worksheet
在宣告這邊我沒有宣告Workbook
Set objExcelApp = CreateObject("ExcelApplication")
objExcelApp.Workbooks.Add '
這裡新增一個工作簿
objExcelApp.Visible = True
objExcelApp.ActiveWorkbook.Worksheets.Add
Set objsheet_VAC = objExcelApp.ActiveWorkbook.Activesheet
objsheet_VAC.name = "VAC"
'以下總共會新增三個sheet並重新命名
省略用一行表示
以下為執行巨集區塊
objSheet_VAC.Activate
'設定目前focus在指定sheet
test
'這邊是把excel錄製的巨集加入至VB6的模組內來呼叫
巨集內容只是做欄位合併跟調整字型
Set objExcelApp = Nothing
Set objSheet_VAC = Nothing
'----------
目前狀況是我資料都顯示在MSFlexGrid上,我去Click轉存excel的按鈕第一次巨集
可以正常執行,此時我畫面會出現excel表格並填上我要的資料與調整格式。
再來我excel不存檔直接關閉,再執行一次轉存excel的按鈕,這時候資料還是有
正常填寫進去,但是卻沒有執行巨集作格式調整,我有試著單步除錯,發現在我
第二次執行轉存excel按紐時,程式進入巨集的第一道程式碼就跳出巨集,
而第一道程式碼是
Range("A2:N2").Select
但我比較不懷疑是巨集的程式碼造成,不知道是不是第一次我把excel關閉,沒有正確
把excel釋放掉造成?
有請各位前輩替小弟我解惑, 謝謝
--
活在我不懂的道理
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.204.1
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Visual_Basic/M.1462866139.A.816.html
※ 編輯: rex921 (210.61.204.1), 05/10/2016 15:53:55
※ 編輯: rex921 (210.61.204.1), 05/10/2016 16:15:06
※ 編輯: rex921 (210.61.204.1), 05/10/2016 16:55:36
1F:推 fumizuki: 不使用excel的時候要呼叫Application.Quit 05/10 21:26
2F:→ fumizuki: 只有把參考設定Nothing,app並不會結束 05/10 21:26
3F:→ fumizuki: 在quit之前也應該呼叫Workbook.Close關閉活頁簿 05/10 21:28
我試試看!!感謝您。
※ 編輯: rex921 (61.227.199.184), 05/10/2016 22:34:40
最後是把所有Set xlsheet = XXX 都把他設定成nothing 還有相關的recordset也設定
處理程序就可以正常關閉了,
過程中發現,如果在VB6使用 sheet(1).select ,但是程式並沒有create這個名稱的話
整個 set nothing就不會成功,VB6對於excel的除錯功能好像沒那麼完善,
或者該說沒有@@!! 我是從頭create excel 然後關閉excel去驗證,慢慢複製舊的程式碼,
一行一行debug ...
※ 編輯: rex921 (210.61.204.1), 05/12/2016 10:56:54
再請教一個問題...
我用excel 2003錄製了一個巨集並匯出成.bas檔案,並加入VB6的模組
內容是選取所有儲存格,文字置中加粗的功能
以下是bas檔案的程式碼
Public Sub test()
Cells.Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
End With
Selection.Font.Bold = True
End Sub
只要我在主程式區呼叫這個副程式,我的Excel處理程序就關不掉,
不知道是不是.bas這個副程式的寫法不完善?導致我的主程式下次
無法再正常執行這個副程式?
煩請前輩替小弟我解惑,謝謝!
※ 編輯: rex921 (210.61.204.1), 05/12/2016 11:32:15
4F:推 fumizuki: 沒記錯的話,Close & Quit & 設定 Nothing 就好了 05/12 19:37
5F:→ fumizuki: New Excel.Application 是在呼叫 Excel主程式 05/12 19:37
6F:→ fumizuki: 凡是外部程序都不受vb6管理 05/12 19:38
7F:→ fumizuki: 沒記錯的話,vb6程式正常結束後,被呼叫的excel也會結束 05/12 19:39
的確,當我程式關閉程序都會自動關閉!!
8F:→ fumizuki: vb6應該不認識什麼叫Selection 05/12 19:44
Selection是用excel錄製的巨集,還是得改成VB6看得懂得語法....
9F:→ fumizuki: 要改成 objExcelApp.Selection 05/12 19:44
VB6與excel版本還有VBA太糾纏不清了 ,不應該本是同根生嗎...哈哈
我換個作法,先自己弄一個空白的excel檔案,然後把格式跟巨集寫在裡面.
然後VB6開啟這個空白檔案把資料寫進去,另存新檔..user開啟檔案就會自動執行巨集
就可以把格式調整好了!!
終於把頭痛的問題搞定了!!謝謝前輩。
※ 編輯: rex921 (61.227.198.216), 05/12/2016 21:07:32