Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2065|回复: 2

[已解决]下面这段代码中,为何不能删除打开过的文件(fn为打开的文件名)

[复制链接]
发表于 2015-6-3 20:57 | 显示全部楼层 |阅读模式
本帖最后由 tinytiger 于 2015-6-4 17:04 编辑

Sub AccessWeb()
  Dim TR%, TC%, kq%,  bq%, rng As Range, kb1$, kb2$,  RJLc%, WCLc%, SYL!, QD!, RJL!, WCL!, fn
  TR = ActiveCell.Row
  TC = ActiveCell.Column
  bq = 0
  l = Val(ThisWorkbook.ActiveSheet.Name)
  myPath = ThisWorkbook.Path & "\"
  wbn = ThisWorkbook.Name
  wbn = Left(wbn, InStrRev(wbn, ".") - 1)
  Year_Num = Sheets("科室设置").Range("D1").Value
  Dept = Sheets("科室设置").Range("B1")
  kb1 = Left(Dept, 2)
  kb2 = Left(Right(Dept, 3), 1)
  On Error Resume Next
  If TC = 7 And Month(Date) > l Then
    If TR = 10 Or TR = 11 Then
      MsgBox "请打开" & myPath & l & "月份《临床路径入径率,完成率统计表》!"
      On Error Resume Next
      ChDrive Mid(ThisWorkbook.Path, 1, 1)
      ChDir ThisWorkbook.Path
      fn = Application.GetOpenFilename("Excel文件,*.xls,Excel文件,*.xlsx,Excel文件,*.xlsm")
      If fn = CStr(False) Then
        MsgBox "没有选择文件,不能导入数据!"
        Exit Sub
      End If
      With Workbooks.Open(fn)
        For Each rng In ActiveSheet.UsedRange
          If Replace(rng.Value, " ", "") = "科室名称" Then kq = rng.Column
          If InStr(Replace(rng.Value, " ", ""), "入径率") > 0 Then RJLc = rng.Column
          If InStr(Replace(rng.Value, " ", ""), "完成率") > 0 Then WCLc = rng.Column
        Next
        For Each rng In ActiveSheet.UsedRange
          If InStr(Replace(rng.Value, " ", ""), kb1) > 0 Then
            bq = rng.Row
            If InStr(Replace(rng.Value, " ", ""), kb2) > 0 Then
              bq = rng.Row
              Exit For
            End If
          End If
        Next
        If bq = 0 Or RJLc = 0 Or WCLc = 0 Then
          MsgBox "没有查找到相应的科室或项目,请手工查找相关数据!"
          Exit Sub
        Else
          RJL = Cells(bq, RJLc).Value
          WCL = Cells(bq, WCLc).Value
        End If
        .Close SaveChanges:=False
      End With
      Kill myPath & fn
      Workbooks(wbn & ".xls").Sheets( l & "月份质控月报表").Activate
      Range("G10").Value = VBA.Format(RJL, "0.00%")
      Range("G11").Value = VBA.Format(WCL, "0.00%")
      ThisWorkbook.Save
    End If
  End If
End Sub

最佳答案
2015-6-4 07:56
本帖最后由 zjdh 于 2015-6-4 08:00 编辑

关于此部分可简化为:
Sub AccessWeb()
      fn = Application.GetOpenFilename("Excel文件,*.xls,Excel文件,*.xlsx,Excel文件,*.xlsm")
      With Workbooks.Open(fn)
        .Close SaveChanges:=False
      End With
     ' Kill myPath & fn
     Kill  fn
End Sub
发表于 2015-6-4 07:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 zjdh 于 2015-6-4 08:00 编辑

关于此部分可简化为:
Sub AccessWeb()
      fn = Application.GetOpenFilename("Excel文件,*.xls,Excel文件,*.xlsx,Excel文件,*.xlsm")
      With Workbooks.Open(fn)
        .Close SaveChanges:=False
      End With
     ' Kill myPath & fn
     Kill  fn
End Sub
回复

使用道具 举报

 楼主| 发表于 2015-6-4 17:03 | 显示全部楼层
zjdh 发表于 2015-6-4 07:56
关于此部分可简化为:
Sub AccessWeb()
      fn = Application.GetOpenFilename("Excel文件,*.xls,Excel ...

谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 09:54 , Processed in 0.270358 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表