Board logo

標題: [發問] 把資料存到另一個 xls 檔案內 [已解決] [謝謝] [打印本頁]

作者: jimmyhk    時間: 2011-9-8 21:07     標題: 把資料存到另一個 xls 檔案內 [已解決] [謝謝]

本帖最後由 jimmyhk 於 2011-9-23 13:41 編輯

現在這段程式碼可以給我把在 Sheets("Input") 指定的資料複製到 Sheet("Databse") 去,
但我試了很多路徑組合都未能把目的地儲存到另一個 xls 檔案內.

有否辦法達成?
  1. Sub SaveRecord()

  2.     Dim formSheet As Worksheet, dataSheet As Worksheet, targetRange As Range, i As Long
  3.     Dim dataAddressList(), newRecord As Range, tmpRecord As Range

  4.     Set formSheet = Sheets("Input")
  5.     Set dataSheet = Sheets("Database")

  6.    
  7.    

  8.     dataAddressList = Array("A24", "A23", "B16", "C16", "D16", "C25", "E25", "E24", "F23", "C28", "E28", "E27", "F26", "J25", "L25", "L24", "M23", "J28", "L28", "L27", "M26", "J31", "L31", "L30", "N29", "C31", "E31", "E30", "G29", "J34", "L34", "L33", "N32", "C34", "E34", "E33", "G32", "Q25", "S25", "S24", "A72", "B72", "C72", "A73", "B73", "C73", "A74", "B74", "C74", "A75", "B75", "C75", "A76", "B76", "C76", "A77", "B77", "C77", "A78", "B78", "C78", "A79", "B79", "C79", "A80", "B80", "C80", "A81", "B81", "C81", "A82", "B82", "C82", "B60", "B61", "B63", "B64", "B65", "B66", "L58", "L59", "L60", "L61", "L62")


  9.     Set targetRange = dataSheet.Range("A" & Rows.Count).End(xlUp).Offset(1)
  10.         For i = 0 To UBound(dataAddressList)
  11.         targetRange.Offset(0, i).Value = formSheet.Range(dataAddressList(i)).Value

  12.     Next
  13.    
  14.     Set newRecord = dataSheet.Range(targetRange, targetRange.Offset(0, UBound(dataAddressList)))
  15.     Set tmpRecord = newRecord.Offset(-1, 0)
  16.     tmpRecord.Copy
  17.     newRecord.PasteSpecial xlFormats
  18.     Application.CutCopyMode = False
  19.    
  20.     Sheets("Database").Select
  21.     Range("A1").Select


  22.     Dim tmpNo As Integer, myrange As Range
  23.     Set myrange = Sheets("Database").Columns(1)
  24.     tmpNo = Application.WorksheetFunction.Max(myrange.Columns(1))
  25.     Range("A" & Rows.Count).End(xlUp).Offset(1).Value = tmpNo + 1

  26.     Sheets("Database").Select
  27.     Range("A1").Select
  28.     Sheets("Sheet1").Select
  29.     Range("A1").Select
  30.     ActiveWorkbook.Save
  31. End Sub
複製代碼

作者: Hsieh    時間: 2011-9-8 21:36

回復 1# jimmyhk
問題要描述重點
另一xls是已存在檔案或是要另存新檔?
若為已存在檔案,是直接覆蓋或接續資料?
作者: jimmyhk    時間: 2011-9-8 22:50

回復  jimmyhk
問題要描述重點
另一xls是已存在檔案或是要另存新檔?
若為已存在檔案,是直接覆蓋或接續 ...
Hsieh 發表於 2011-9-8 21:36



不是要另存新檔,
是想把有關資料複製到現存的 excel 內接續資料.

現有的代碼只可以把資料由 Sheet1 複製到 sheet2,
但不能由 file1 的 sheet1 複製到 file2 的 sheet1 內.

請指教
作者: GBKEE    時間: 2011-9-9 09:35

回復 3# jimmyhk
Set formSheet = WorkBooks("A").Sheets("Input")
Set dataSheet = WorkBooks("B").Sheets("Database")
作者: jimmyhk    時間: 2011-9-9 12:10

回復  jimmyhk
Set formSheet = WorkBooks("A").Sheets("Input")
Set dataSheet = WorkBooks("B").Sheet ...
GBKEE 發表於 2011-9-9 09:35


這個方法我試過了, 我以以下的語句輸入後執行
  1.     Set dataSheet = Workbooks("Database.xls").Sheets("Database")
複製代碼
它回覆寺行階段錯誤 '9',
陣列索引超出範圍.


出錯的原因在那裡?
作者: GBKEE    時間: 2011-9-9 12:30

回復 5# jimmyhk
段錯誤 '9',陣列索引超出範圍.   就是檔案沒打開啊!!!!

  1. '檔案打開的Code
  2. With Workbooks.Open("Database.xls")
  3.     Set dataSheet = .Sheets("Database")
  4. End With
複製代碼

作者: jimmyhk    時間: 2011-9-9 13:34

回復 6# GBKEE


找不到 databse.xls.....
(我已把它們放在同一資料夾內)
是否要另加路徑數式?
作者: GBKEE    時間: 2011-9-9 13:36

回復 7# jimmyhk
是否要另加路徑 這是當然的
作者: jimmyhk    時間: 2011-9-9 13:59

回復 6# GBKEE


我成功了
原來要在 path 上下多一點點功夫
  1.     mypath = ThisWorkbook.Path
  2.    

  3.     With Workbooks.Open(mypath & "\" & "Database.xls")
  4.     Set dataSheet = .Sheets("Database")
  5. End With
複製代碼
謝謝幫忙~




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