返回列表 上一主題 發帖

[發問] 請問如何將指定的工作表!另存成一個新的活頁簿(.xls檔)!

[發問] 請問如何將指定的工作表!另存成一個新的活頁簿(.xls檔)!

本帖最後由 棋語鳥鳴 於 2011-11-12 14:06 編輯

請問如何利用vba新增一個.xls檔,並放入指定區域(B2),讓新增的檔案名稱為B1的文字!最後將此sheet的內容與工作表名稱放入!(應該說將此SHEET的內容另存至新的活頁簿中)
例:於C:\下產生一個"測試A.xls",並將此工作表與 測試.rar (12.81 KB) 內容放入!

回復 1# 棋語鳥鳴
  1. Sub Ex()
  2.     With ActiveWorkbook      '作用中的活頁簿
  3.         'ThisWorkbook        '程式碼所在的活頁簿
  4.         'WorkbookS(1)        '指定 開啟活頁簿中的索引值
  5.         'WorkbookS("Test")   '指明開啟活頁簿中的名稱
  6.         .SaveCopyAs Sheets(1).[B2] & Sheets(1).[B1] & "." & Split(.Name, ".")(1)
  7.         '.SaveCopyAs   另存新檔的方法
  8.         'Split(.Name, ".")(1) ->傳回活頁簿的副檔名
  9.     End With
  10. End Sub
複製代碼

TOP

本帖最後由 棋語鳥鳴 於 2011-11-12 18:13 編輯

回復 2# GBKEE
請問"GBKEE"大大,
1.如何修改此巨集,讓它只另存指定的sheet(單一個sheet)就好,而不要整個檔案都過去(巨集也不要過去)!
2.如何將此檔案變成2003的.xls格式?

TOP

回復 3# 棋語鳥鳴
  1. Option Explicit
  2. Sub Ex()
  3.     Dim E As Object
  4.     ActiveWorkbook.Sheets(1).Copy     '複製Sheets(1) 一張工作表到新的活頁簿
  5.     With ActiveWorkbook               '複製後的新活頁簿是  **作用中的活頁簿**
  6.         For Each E In .VBProject.VBComponents                       '活頁簿專案中元件的集合物件
  7.             E.CodeModule.DeleteLines 1, E.CodeModule.CountOfLines   '刪除所有的程式碼
  8.         Next
  9.         .SaveCopyAs .Sheets(1).[B2] & .Sheets(1).[B1] & "." & Split(.Name, ".")(1)
  10.         .Close False                  '關閉檔案 (不存檔)
  11.     End With
  12. End Sub
複製代碼

TOP

回復 4# GBKEE
這句不知哪裡出錯==>For Each E In .VBProject.VBComponents                       '活頁簿專案中元件的集合物件
出現錯誤1004:
不信任以程式設計方式存取visual Basic專案

TOP

本帖最後由 luhpro 於 2011-11-13 00:11 編輯

回復 5# 棋語鳥鳴
因為我的是 Excel 2003 相關設定的畫面是底下這樣 :

信任存取 Visual Basic 專案


至於你的 Excel 2007 畫面與位置可能有所不同,
請參閱底下這一篇文章的內容:

請問如何關掉EXCEL 2007 "設計模式"?


找找看是否是你目前的設定阻擋了程式的執行.

請留意 :
不是要你照著他的方式設定,
而是希望你能找找看你的電腦上在那個視窗裡面, (都找找看, 尤其是 "信任中心" 那個頁面內)
是否有需要你做開放或調整的設定項目.

TOP

現在變成這段==>.SaveCopyAs .Sheets(1).[B2] & .Sheets(1).[B1] & "." & Split(.Name, ".")(1)
陣列索引超出範圍!

TOP

回復 7# 棋語鳥鳴
  1. Sub Ex()
  2.     Dim Bo As Workbook, E As Object, S As String
  3.     Set Bo = ActiveWorkbook
  4.     Bo.Sheets(1).Copy     '複製Sheets(1) 一張工作表到新的活頁簿
  5.     With ActiveWorkbook               '複製後的新活頁簿是  **作用中的活頁簿**
  6.         For Each E In .VBProject.VBComponents                       '活頁簿專案中元件的集合物件
  7.             E.CodeModule.DeleteLines 1, E.CodeModule.CountOfLines   '刪除所有的程式碼
  8.         Next
  9.         .SaveCopyAs .Sheets(1).[B2] & .Sheets(1).[B1] & "." & IIf(Bo.Path <> "", Split(Bo.Name, ".")(1), "xls")
  10.         .Close False                  '關閉檔案 (不存檔)
  11.     End With
  12. End Sub
複製代碼

TOP

回復 8# GBKEE
板大:不好意思,又要麻煩您修改了!
1.現在可以轉出檔案了!不過~轉出來格檔案格式不對(檔案與一開始的格式一樣,且不能開啟,要自行改成.xls才能開啟)
2.請問如果我要轉出的sheet為sheet2要如何修改其巨集,檔名和路徑還是在sheet1!

TOP

回復 9# 棋語鳥鳴
  1. Sub Ex()
  2.     Dim Bo As Workbook, Save_Name  As String, E As Object
  3.     With ActiveWorkbook             '***  要複製的活頁簿 ***
  4.                                     'ActiveWorkbook      '作用中的活頁簿
  5.                                     'ThisWorkbook        '程式碼所在的活頁簿
  6.                                     'WorkbookS(1)        '指定 開啟活頁簿中的索引值
  7.                                     'WorkbookS("Test")   '指明開啟活頁簿中的名稱'
  8.         Save_Name = .Sheets(1).[B2] & .Sheets(1).[B1] & ".xls"
  9.         .Sheets("工作表名稱").Copy     '指定複製一張工作表到新的活頁簿
  10.     End With
  11.     With ActiveWorkbook               '複製後的新活頁簿是  **作用中的活頁簿**
  12.         For Each E In .VBProject.VBComponents                       '活頁簿專案中元件的集合物件
  13.             E.CodeModule.DeleteLines 1, E.CodeModule.CountOfLines   '刪除所有的程式碼
  14.         Next
  15.         .SaveCopyAs Save_Name
  16.         .Close False                  '關閉檔案 (不存檔)
  17.     End With
  18. End Sub
複製代碼

TOP

        靜思自在 : 時時好心就是時時好日。
返回列表 上一主題