2013-05-06 91 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

相關問題