2013-05-06 54 views
2

我正在使用创建文件并复制我的工作簿(xlsm)并将其保存为xls工作簿到创建的文件的过程,这很奏效。保存为xls工作簿时删除所有宏/ vba

保存为时,我需要删除所有的宏和vba,即我需要从保存的工作簿中删除宏/ vba而不是原始工作簿。

我知道我可以将它保存为一个xlsx工作簿来删除所有宏和vba,但我需要该工作簿是一个Macro/vba免费xls工作簿。

我已经Google'ed,但没有找到任何我可以使用的东西,如果我明白了这一点,我会继续寻找并回复。

+6

我相信一个更简单的解决方法是在另一个在一个工作簿中的宏和数据。一个宏很容易在另一个工作簿上运行。获得一个宏来删除自己,然后保存工作簿听起来更具挑战性。 – 2013-05-06 12:18:33

+10

这可能有点破解,但我认为它会更快......为什么不把它保存为.xlsx,然后将.xlsx保存为.xls?我知道这是一个两步的过程,但它可能比完成这里的步骤更容易:http://www.cpearson.com/excel/vbe.aspx – sous2817 2013-05-06 12:25:54

+2

您可以随时将所有工作表导出到新的工作簿。默认情况下,新工作簿中不包含任何宏。 – Stewbob 2013-05-06 19:57:49

回答

-1

我发现这个在这里:

http://enholm.net/index.php/blog/vba-code-to-transfer-excel-2007-xlsx-books-to-2003-xls-format/

它搜索通过d​​irictory寻找XLSX文件,并将其更改为XLS文件

我认为尽管它可以改变一下为xlsm文件并将它们更改为xls文件。

当我运行它,我得到:

Run-Time error '9' Subscript out of range 

Debug 
Sheets("List").Cells(r, 1) = Coll_Docs(i) 
is highlighted in yellow 

我不知道有足够的了解VBA弄清楚什么是行不通的。 感谢

Sub SearchAndChange() 
Dim Coll_Docs As New Collection 

Dim Search_path, Search_Filter, Search_Fullname As String 

Dim DocName As String 

Application.DisplayAlerts = False 

Application.ScreenUpdating = False 

Application.Calculation = xlCalculationManual 

Dim i As Long 


Search_path = ThisWorkbook.Path & "\360 Compiled Repository\May_2013" 

Search_Filter = "*.xlsx" 

Set Coll_Docs = Nothing 
DocName = dir(Search_path & "\" & Search_Filter) 

Do Until DocName = "" 

    Coll_Docs.Add Item:=DocName 

    DocName = dir 

Loop 


r = 1 

For i = Coll_Docs.Count To 1 Step -1 

    Search_Fullname = Search_path & "\" & Coll_Docs(i) 

    Sheets("List").Cells(r, 1) = Coll_Docs(i) 

     Call changeFormats(Search_path, Coll_Docs(i)) 

     r = r + 1 

Next 

Application.DisplayAlerts = True 

Application.ScreenUpdating = True 

Application.Calculation = xlCalculationAutomatic 

End Sub 
'************************************************************** 

'* Changes format from excel 2007 to 2003 

'*************************************************************** 
Sub changeFormats(ByVal dir As String, ByVal fileName As String) 

Workbooks.Open fileName:=dir & fileName 

ActiveWorkbook.SaveAs fileName:=dir & Replace(fileName, "xlsx", "xls"), FileFormat:=xlExcel8 

ActiveWindow.Close 
End Sub 
+1

“Sheets(”List“)'存在吗? – 2014-02-18 17:02:33

+0

我觉得我的简单过度的景象缩小了,你的洞察力被发现了。谢谢! – xyz 2014-02-18 21:53:05

相关问题