Board logo

標題: [發問] 如何另存無參數資料與巨集的檔案,再恢復檔案原狀以便再另存下一個檔案? [打印本頁]

作者: luhpro    時間: 2010-8-20 23:09     標題: 如何另存無參數資料與巨集的檔案,再恢復檔案原狀以便再另存下一個檔案?

本帖最後由 luhpro 於 2010-8-20 23:57 編輯

使用環境 : Windows XP + Office 2000 Professional

我知道要存成沒有巨集的檔案可以用 SaveAs 存成 FileFormat 為 Excel4 的檔案.

因為原始檔案是需要連結到看盤軟體隨時動態抓取資料的,
在各別板友的PC上執行可能會有問題,
故改成另一個測試用檔案來模擬此需求.

大致上的需求是檔案上只有單一個 Sheet,
Sheet 上區分成兩個區域 : 結果區 與 參數區 (有公式,有儲存格個別格式)
原先初步的構想是把 參數資料 直接都備份在剪貼簿上,
等 (去掉參數資料與巨集) 另存檔案後再貼回去原來的地方,
但是那個存檔的動作一做過後剪貼簿上的資料就消失了,
以至於沒資料可以還原回去.

其次是考量開個暫時的 Sheet Object 來存放參數資料,
只是一旦焦點切過去要再切回來操作就會出現錯誤,
因而執行不下去. (如附件[attach]2512[/attach])
我猜測可能是因為他們是兩個不同的檔案導致,
那麼是否有其他好的方式可以備存那些參數資料,
以便存檔後繼續產生下一個檔案的資料呢?

PS. 實際上的檔案有用到那些共用參數資料(公式,格式...等),
不過從另一個軟體中轉過來的資料每次都不同 -> 每次都會產生不同的結果資料.

另有看過Excel VBA說明檔雖然有看到 DataObject 的相關敘述,
卻發現套用上去會說使用者格式未定義不讓用?
但這不是 Excel 自己定義的東西嗎?
作者: Hsieh    時間: 2010-8-21 00:00

巨集寫在一般模組
Sheets(1).Copy
ActiveWorkbook.SaveAs
作者: luhpro    時間: 2010-8-21 13:01

巨集寫在一般模組
Sheets(1).Copy
ActiveWorkbook.SaveAs
Hsieh 發表於 2010-8-21 00:00


試過不行呢.

Sub aa()
  With Sheets("樣板").[L134]
    .Copy
    .Clear
   
    ActiveWorkbook.SaveAs Filename:="1234.xls", FileFormat:=xlExcel4

    .[L1].PasteSpecial
  End With
End Sub

Clear 執行後剪貼簿上的資料就消失了,
似乎會記憶它的資料是從哪裡貼過來的,
而來源資料一旦被清掉後它的資料也會被同步清掉?
作者: Hsieh    時間: 2010-8-21 13:25

本帖最後由 Hsieh 於 2010-8-21 13:38 編輯

[code]Sub getnewbook()
Application.DisplayAlerts = False
With Sheets("樣板")
   .Copy
   With ActiveWorkbook
    .ActiveSheet.Columns("A:K").Clear
    .SaveAs "E:\1234.xls"
  End With
Application.DisplayAlerts = True
End With
End Sub
[attach]2517[/attach]
作者: luhpro    時間: 2010-8-21 13:49

回復 4# Hsieh

可能是我的敘述有不清楚的地方,
左邊 A ~ E 欄的資料是要另存到一個 (沒有巨集與沒有右邊 L ~ Q 欄這些 參數資料 的) 檔案,
存完後畫面回到沒有任何修改的狀態 (也就是有 L ~ Q 欄這些 參數資料 與 巨集程式)
不知這樣的需求是否可以達到呢?

謝謝 Hsieh 大大...
作者: Hsieh    時間: 2010-8-21 13:56

回復 5# luhpro


    那就刪除L:Q
存檔關閉
  1. Sub getnewbook()
  2. Application.DisplayAlerts = False
  3. With Sheets("樣板")
  4.    .Copy
  5.    With ActiveWorkbook
  6.     .ActiveSheet.Columns("L:Q").Clear
  7.     .SaveAs "E:\1234.xls"
  8.     .Close
  9.   End With
  10. Application.DisplayAlerts = True
  11. End With
  12. End Sub
複製代碼

作者: luhpro    時間: 2010-8-21 14:16

本帖最後由 luhpro 於 2010-8-23 20:28 編輯

回復 6# Hsieh

太漂亮了.^^
這就是我想要的結果.

試過很多種方式,
說明裡的例子一個一個試了很多都失敗.
原來只要先 Copy 過,
於 SaveAs 過後之前修改過的狀態自己就會還原了,
這在 Excel VBA 的說明裡似乎根本找不到相關敘述.

試過後裡面我只改了一行
  .SaveAs Filename:="D:\1234.xls", FileFormat:=xlExcel4
就可以完全達到此目的了.

另外首篇中所問的 Excel 2000 Professional 的說明裡雖然有 DataObject 的範例,
但實際套用Excel卻會說不認識這個資料型態,
不知道是不是還要開啟什麼項目它才能正常使用此資料形態呢?

謝謝 Hsieh 大大...

回復 8# Hsieh
原來在舊網站內有資料,
曾經嘗試去舊網站中找一些資訊,
但似乎沒辦法做全站或單板文章的搜尋,
只能一頁一頁逐一尋找找到眼花花...
作者: Hsieh    時間: 2010-8-21 15:01

本帖最後由 Hsieh 於 2010-8-21 15:03 編輯

回復 7# luhpro


http://gb.twbts.com/index.php/topic,1878.0.html




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