Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: qjsu

[已解决]请问这段代码哪里错了?

[复制链接]
 楼主| 发表于 2012-10-22 19:11 | 显示全部楼层
提示如下:
Excel 无法打开文件“1.xlsx”,因为问价格式或文件扩展名无效。请确定文件为损坏,并且文件扩展名与文件的格式匹配。
回复

使用道具 举报

发表于 2012-10-22 19:11 | 显示全部楼层
本帖最后由 hwc2ycy 于 2012-10-22 19:22 编辑
  1. Sub 去除公式连接()
  2.     Dim i As Integer
  3.     Dim y As Integer
  4.     Dim sPath$, sFilename$
  5.     Application.ScreenUpdating = False
  6.     '关闭警告信息和对话框,默认情况下重名文件会被覆盖
  7.     Application.DisplayAlerts = False
  8.      sPath = ThisWorkbook.Path & Application.PathSeparator
  9.     y = InputBox("请输入表格数量")
  10.     If y > Worksheets.Count Or y = 0 Then
  11.         MsgBox "请输入正确的工作表数量" & "[<" & Worksheets.Count & "]"
  12.         Exit Sub
  13.     End If
  14.    
  15.     For i = 2 To y + 1
  16.         Sheets(i).Select
  17.         Columns("A:M").Copy
  18.         Range("a1").Activate
  19.         Selection.PasteSpecial Paste:=xlPasteValues
  20.         Application.CutCopyMode = False
  21.         Columns("A:D").Select
  22.         Range("D1").Activate
  23.         Selection.Delete Shift:=xlToLeft
  24.         Columns("J:K").Select
  25.         Selection.Delete Shift:=xlToLeft
  26.         Sheets(i).Copy
  27.         sFilename = sPath & ThisWorkbook.Sheets(i).Name & ".xlsx"
  28.         Debug.Print sFilename
  29.         ActiveWorkbook.SaveAs Filename:=sFilename, FileFormat:=xlOpenXMLWorkbook
  30.         ActiveWorkbook.Close
  31.     Next
  32.     Application.ScreenUpdating = True
  33.     Application.DisplayAlerts = True
  34. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
qjsu + 3 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-10-22 19:31 | 显示全部楼层
hwc2ycy 发表于 2012-10-22 19:11

我又修改了一下代码,虽然不十分明白是为什么,但还终于调试成功了,谢谢大神,膜拜你,收徒弟不?拜师啊大神,改过地代码如下:
Sub 去除公式连接()

    Dim i As Integer

    Dim y As Integer
   
    Application.ScreenUpdating = False

    '关闭警告信息和对话框,默认情况下重名文件会被覆盖

    Application.DisplayAlerts = False
   
    y = InputBox("请输入表格数量")

    For i = 2 To y + 1

        Sheets(i).Select

          Columns("A:M").Select
         
          Selection.Copy
         
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                   :=False, Transpose:=False
                  
          Application.CutCopyMode = False
         
          Columns("A:D").Select
         
          Range("D1").Activate
         
          Selection.Delete Shift:=xlToLeft
         
          Columns("J:K").Select
         
          Selection.Delete Shift:=xlToLeft
              
        Sheets(i).Copy

        'ActiveWorkbook.SaveAs Application.ActiveWorkbook.Path & "\" & Sheets("i").Name & ".xls"  '(工作表名称为文件名)

        Debug.Print ThisWorkbook.PATH & Application.PathSeparator & ThisWorkbook.Sheets(i).Name & ".xlsx"

        ActiveWorkbook.SaveAs Filename:=ThisWorkbook.PATH & Application.PathSeparator & ThisWorkbook.Sheets(i).Name & ".xlsx", FileFormat:=xlOpenXMLWorkbook

        'ActiveWorkbook.Close True, Filename:=ThisWorkbook.Path & Application.PathSeparator & ThisWorkbook.Sheets(i).Name & ".xlsx"

        ActiveWorkbook.Close

    Next

    Application.ScreenUpdating = True

    Application.DisplayAlerts = True

End Sub
回复

使用道具 举报

发表于 2012-10-22 19:35 | 显示全部楼层
我也半调子,哪有资格收呢。
大家一起学习吧。
回复

使用道具 举报

 楼主| 发表于 2012-10-22 19:42 | 显示全部楼层
hwc2ycy 发表于 2012-10-22 19:35
我也半调子,哪有资格收呢。
大家一起学习吧。

您太谦虚了,收了我吧
回复

使用道具 举报

 楼主| 发表于 2012-10-22 19:50 | 显示全部楼层
qjsu 发表于 2012-10-22 19:42
您太谦虚了,收了我吧

能在加一句代码吗?在不保存这个文档的情况下关闭该文档?
回复

使用道具 举报

发表于 2012-10-23 09:33 | 显示全部楼层
activeworkbook.close false
试试吧。
回复

使用道具 举报

 楼主| 发表于 2012-10-23 11:44 | 显示全部楼层
网上搜索了一下,使用这个命令可以,虽然不太明白
thisworkbook.saved = ture
activewindow.close
回复

使用道具 举报

发表于 2012-10-24 17:10 | 显示全部楼层
高手好多啊,像我这个菜鸟真是……
回复

使用道具 举报

 楼主| 发表于 2012-10-25 08:49 | 显示全部楼层
hwc2ycy 发表于 2012-10-23 09:33
activeworkbook.close false
试试吧。

老师的代码也好使,崇拜中ing...
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 16:35 , Processed in 0.673389 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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