各位高人:
请教一个小问题:我在用vb控制往excel中写数据时,如果这个文件已经处于打开状态,写的时候老是不正确,我有什么办法可以判断excel文件处于打开状态,然后将其关闭后再在我的程序中打开进行数据写入,或者有什么更好的办法可以实现。我觉得关闭后在程序中打开,安全一点。请高人指点。 再问:如何用vb代码控制删除sheet,我用了如下代码,可是实现不了,不知道为什么
i = xlBook.Sheets.Count
Dim a As String
While (i > 1)
If (xlBook.Sheets(i).Name <> xlsLeave$) And (xlBook.Sheets(i).Name <> xlsPlan$) And (xlBook.Sheets(i).Name <> xlsManufacture$) And (xlBook.Sheets(i).Name <> xlsSale$) Then
a = xlBook.Sheets(i).Name
Sheets(a).Select
ActiveWindow.SelectedSheets.Delete
End If
i = i - 1
Wend
xlBook.Save
Set xlsheet = Nothing急!请高人指点一二。
谢谢大家
请教一个小问题:我在用vb控制往excel中写数据时,如果这个文件已经处于打开状态,写的时候老是不正确,我有什么办法可以判断excel文件处于打开状态,然后将其关闭后再在我的程序中打开进行数据写入,或者有什么更好的办法可以实现。我觉得关闭后在程序中打开,安全一点。请高人指点。 再问:如何用vb代码控制删除sheet,我用了如下代码,可是实现不了,不知道为什么
i = xlBook.Sheets.Count
Dim a As String
While (i > 1)
If (xlBook.Sheets(i).Name <> xlsLeave$) And (xlBook.Sheets(i).Name <> xlsPlan$) And (xlBook.Sheets(i).Name <> xlsManufacture$) And (xlBook.Sheets(i).Name <> xlsSale$) Then
a = xlBook.Sheets(i).Name
Sheets(a).Select
ActiveWindow.SelectedSheets.Delete
End If
i = i - 1
Wend
xlBook.Save
Set xlsheet = Nothing急!请高人指点一二。
谢谢大家
下面函数仅供参考,原理就是试图建立一个文件.如果该文件已经被别的程序打开,则会返回TRUE.否则,返回FALSE. *注意:我仅仅提供一种思路.由于该程序存在极大的危险.即如果该文件不存在.它会建立.如果该文件并未被别的文件打开.则会覆盖原来的文件.Public Function FileCheck(Filename As String) As Boolean
Dim FileID As Long
On Error Resume Next
FileID = FreeFile()
Open Filename For OutPut As #FileID
Close #FileID
FileCheck = (Err.Number = 0)
Err.Clear
End Function
不过我还是觉得修改VB程序使其适应EXCEL才是正途,否则别人用起来会很不方便。
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_CLOSE = &H10Private Sub Form_Load()
Dim classname As String * 64
GetClassName Me.hwnd, classname, 64
wnd = FindWindow(classname, "Lock") '检查程序标题
If wnd <> 0 Then
SendMessage wnd, WM_CLOSE, 0, 0
End If
Form1.Show: Unload Me
End Sub
以上是我编写的防止程序运行两个实例的代码,可以参照