当前位置:编程学习 > VB >>

vb修改excel出现的问题

我想通过vb修改excel的内容。当excel没有打开时,vb可以修改,但当打开要修改的excel文件时,就出现问题,提示:在当前位置发现已经存在名为“##.xls”的文件。你希望将该文件替换掉吗?。请问怎么解决这个问题。谢谢 --------------------编程问答-------------------- ?代码呢 --------------------编程问答-------------------- Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type
Private Sub Command3_Click()
 Dim XLS As New Excel.Application
    Dim WRK As Excel.Workbook
    Dim SHT As Excel.Worksheet
    Dim RNG As Excel.Range
       '建立Excel新实例
        Set XLS = CreateObject("Excel.Application")
        '打开 XLS 文件
        Set WRK = XLS.Workbooks.Open(Text1.Text, False, False)
        '把当前选择的工作表赋值给SHT
        Set SHT = WRK.Worksheets(1)
        SHT.Cells(1, 1) = 1
         WRK.save
        '退出 Excel
      XLS.Quit
        
        '变量释放
        Set XLS = Nothing
        Set WRK = Nothing
        Set SHT = Nothing
               
End Sub



我就是给excel表A1B1中赋值1,帮我看看。我想如果已打开了excel文件,那么代码中关于保存和退出会和当前的窗口excel文件发生冲突。请问怎么解决。 --------------------编程问答-------------------- 估计是保存时出现的提问,先将已存在的文件删除就可以了。 --------------------编程问答-------------------- 保存之前加上
Application.DisplayAlerts = False
保存之后再变成
Application.DisplayAlerts = true
这样就能不消失 对话框!

试试看

但是一般的对excel操作都会做一个中间的文件操作完成后再整体拷贝到最终文件中。 --------------------编程问答-------------------- 现在的问题是如果文件处于打开的状态就不能修改文件就会出问题。而如果要修改的文件没有处于打开状况,就不会出问题,当再打来文件,就修改好了。 --------------------编程问答-------------------- 在Set SHT = WRK.Worksheets(1)前加个判断,避免这个情况出现
    If XLS.ActiveWorkbook.IsInplace = False Then
        MsgBox "该excel文件已经在Microsoft Excel 中打开"
        Set XLS= Nothing
        Exit Sub
    End If
--------------------编程问答-------------------- 因为文件已经打开...VB操作前先关闭文件..
操作完成后  XLS.Visible = True  VB自动打开 --------------------编程问答-------------------- 六楼的办法确实避免了出错误。但能不能文件在打开的状态下vb也能修该。 --------------------编程问答-------------------- 不能,因为在Microsoft Excel 中打开之后,文件是只读的 --------------------编程问答-------------------- 我重新试了一下。excel中将该文件设置为允许多用户同时编辑工具》共享工作簿》允许多用户同时编辑。可以在打开的状态下修改。不过要关掉后再打开文件才会显示出修改的内容。
--------------------编程问答-------------------- 那就加Application.DisplayAlerts = False 吧...默认选的"是" --------------------编程问答-------------------- 加Application.DisplayAlerts = False 
好像不行,没反应。
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,