Option Explicit
Public Sub CheckExist(fm As Form)
Dim title As String
If App.PrevInstance Then
title = App.title
Call MsgBox(\"這程式已執行\", vbCritical)
App.title = \"\" \'如此才不會Avtivate到自己
fm.Caption = \"\"
AppActivate title \'activate先前就已行的程式
End
End If
End Sub
如以上是判斷自身是否以打開,如何將之改成判斷某一 XLS 檔 是否已經開啟
2006-06-29 22:14:52 · 3 個解答 · 發問者 希望與渴望 6 in 電腦與網際網路 ➔ 程式設計
是的,這XLS檔是另外有包含vba的存檔非臨時用檔,我的用意是這樣如以下:以VB啟動這一個EXCEL檔後,vb本身予以.hide,不希望他再次被打開 包括這一個XLS檔
所以我是了好幾個方式都遇上一個瓶頸,就是我必須去判斷XLS檔以及本身是否已執行,以及XLS檔關閉前去關閉VB這個執行檔
2006-06-30 07:40:40 · update #1
我想我表達不是很清楚,不然就是我所想的作法邏輯有誤,我再補充一下,VB那個執行檔只是負責 1.判斷本身是否已開啟和(判斷xls檔是否已開啟 )2.開啟EXCEL 檔和 3.秀出歡迎使用的frmSplash 匡匡,真正操作是在XLS 檔裡操作......現在搞不清楚的是如何判斷這個XLS檔是否已打開?以及如何在VBA 中關閉那個VB執行檔.....嘻嘻..這樣我有神經錯亂嗎??
2006-06-30 08:42:32 · update #2
'我想可以利用API來作,或是DDE的方式,以下是利用API來達成.'-----以下在VB----Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Sub Command1_Click()Dim S As String, hW As Long'譬如說你的xls檔名是Test.xlsS = "Microsoft Excel - Test.xls"'找尋Test.xls的hWndhW = FindWindow(vbNullString, S)'若找不到表示此檔尚未開啟,就用Shell開啟它If hW = 0 Then Shell "C:\Test.xls", vbNormalFocus'隱藏本身Me.HideEnd Sub'-----以下在Excel----Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongConst WM_CLOSE = &H10Private Sub Workbook_BeforeClose(Cancel As Boolean)Dim S As String, hW As Long'譬如說你的VB程式表單上的Caption是Form1S = "Form1"'找尋VB程式的hWndhW = FindWindow(vbNullString, S)'找到的話用PostMessage把它關掉If hW Then PostMessage hW, WM_CLOSE, 0, 0End Sub
2006-07-01 11:36:32 · answer #1 · answered by W.J.S. 7 · 0⤊ 0⤋
那要我要拿3支香多多拜拜
,希望神人快快出現,呵呵...
希望有人能解決這個問題
2006-07-02 14:53:20 補充:
http://www.chinaaskpro.com/msg14/qa82.shtml
請務必配合以上的程式碼使用才好
2006-07-02 17:08:48 補充:
oleExcel.Workbooks.Open filename:="G:\My Documents\bank.xls" 改成oleExcel.Workbooks.Open filename:=App.Path & "\Test.xls"
2006-07-06 12:34:27 補充:
http://unix-cd.com/unixcd12/article_view.asp?id=872 EPSON點陣式打印機應用命令總匯
http://kudns.cn/Article/learnzz/aspcode/200603/103.html 常用ASCII 码对照表
2006-07-13 13:06:04 補充:
紙張後退指令"DOPRINT(CHR(27)+"J"+"1" 可用於退紙到與打印頭對齊線齊
2006-06-30 10:38:52 · answer #2 · answered by 希望與渴望 6 · 0⤊ 0⤋
你是假設這個檔是你用自己程式開的嗎?
2006-06-30 12:23:19 補充:
那我跟你分享一個stupid way ^^.
首先你把這個檔案copy至另一個檔案, 例如001.xls ==> 001temp.xls .
之後你的程式就針對 001temp.xls作操作即可.
最後完成時再把原本的001.xls 殺掉, 把001temp.xls更名為001.xls .
以上操作皆可使用程式實現, 不知道這樣可不可以解決你的問題> <.
2006-06-30 14:34:43 補充:
我還是不太懂你的意思,可能我沒用過VBA所以無法體會您的情況. > <. 不過沒關係網路上神人很多,一定有人可以解決你的狀況的.
2006-07-02 14:09:51 補充:
神人果然有出現^^, 帥呆了~( 努力筆記中 )
2006-06-30 08:23:19 · answer #3 · answered by 買大 4 · 0⤊ 0⤋