Board logo

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

作者: 棋語鳥鳴    時間: 2011-11-12 13:54     標題: 請問如何將指定的工作表!另存成一個新的活頁簿(.xls檔)!

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

請問如何利用vba新增一個.xls檔,並放入指定區域(B2),讓新增的檔案名稱為B1的文字!最後將此sheet的內容與工作表名稱放入!(應該說將此SHEET的內容另存至新的活頁簿中)
例:於C:\下產生一個"測試A.xls",並將此工作表與[attach]8509[/attach]內容放入!
作者: GBKEE    時間: 2011-11-12 15:06

回復 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
複製代碼

作者: 棋語鳥鳴    時間: 2011-11-12 18:09

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

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

回復 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
複製代碼

作者: 棋語鳥鳴    時間: 2011-11-12 22:15

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

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

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

信任存取 Visual Basic 專案
[attach]8513[/attach]

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

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


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

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

現在變成這段==>.SaveCopyAs .Sheets(1).[B2] & .Sheets(1).[B1] & "." & Split(.Name, ".")(1)
陣列索引超出範圍!
作者: GBKEE    時間: 2011-11-13 07:23

回復 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
複製代碼

作者: 棋語鳥鳴    時間: 2011-11-13 08:32

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

回復 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
複製代碼

作者: 棋語鳥鳴    時間: 2011-11-13 11:07

回復 10# GBKEE

這次測試就ok了~感謝大大不辭辛勞的修改!!
作者: av8d    時間: 2012-9-10 10:15

本帖最後由 av8d 於 2012-9-10 10:45 編輯

回復 10# GBKEE


    大大~您好~檔案存檔位置是?

原檔執行後關閉(不存檔)
在桌面找不到另存的新檔

我下載了原作者測試檔~迎刃而解~檔案沒問題~感恩!
作者: bear0925900003    時間: 2014-3-13 19:11

借用一下喔
作者: bear0925900003    時間: 2014-3-14 00:26

回復 10# GBKEE
請問大大如果要指定2張工作表要怎麼修改




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)