返回列表 上一主題 發帖

[發問] 將資料寫入到其他多個EXCEL檔案

回復 12# lpk187
我將資料整理好了

每日更新接收,黃色區塊有sub 計算數量,所以希望vba貼過去不會覆蓋,或者有什麼方法可以解決也可以,
因為傳送過去的資料,有可能會做微調,所以才希望函數不要被覆蓋掉。
共會傳送3筆資料到各個不同的工作表。
VBA資料自動傳送問題.rar (302.42 KB)

TOP

回復 12# lpk187


    好!我全部整理一下再跟你說,謝謝

TOP

回復 11# mark761222

可以的話,請附上你的範例檔案上來,而且是你最終目的的範例檔,目的不同,就算只有些許的改變,可能程式都要大幅的改變,就像11樓的問題,和之前的寫法大部份會不一樣!
甚至可以的話在範例檔中請附上C欄及F欄的公式!

TOP

回復 9# lpk187
我試過了!可以但有一個地方會錯誤,第一次資料轉出可以,再按第二次他會出現下圖
AAA.jpg
  1. Sub Workbook_Open2()
  2. Dim xlPath As Variant, Ro As Integer
  3. Dim xlFilea, xlFileb, arra, arrb
  4.     xlPath = ThisWorkbook.Path & "\"
  5. xlFilea = ("B.xlsx")
  6. xlFileb = ("C.xlsx")
  7. arra = Sheets("工作表1").Range("A1:F1")
  8. arrb = Sheets("工作表1").Range("A2:F2")
  9.     Workbooks.Open (xlPath & xlFilea)
  10.     With Workbooks(xlFilea).Worksheets("工作表1")
  11.         Set da = .Columns(1).Find(arra(1, 1), , , , , 2)
  12.         If Not da Is Nothing Then GoTo 10
  13.          Ro = .Cells(65535, 1).End(xlUp).Row + 1
  14.          
  15.         .Cells(Ro, 1).Resize(UBound(arra), UBound(arra, 2)) = arra
  16.     End With
  17. 10:
  18.     Workbooks(xlFilea).Close True

  19.     Workbooks.Open (xlPath & xlFileb)
  20.     With Workbooks(xlFileb).Worksheets("工作表1")
  21.         Set da = .Columns(1).Find(arrb(1, 1), , , , , 2)
  22.         If Not da Is Nothing Then GoTo 10
  23.         Ro = .Cells(65535, 1).End(xlUp).Row + 1
  24.         .Cells(Ro, 1).Resize(UBound(arrb), UBound(arrb, 2)) = arrb
  25.     End With
  26. 20:
  27.     Workbooks(xlFileb).Close True

  28. End Sub
複製代碼
另一方面如果傳送方式變成如下圖
c.xlsx會有函數去計算數值,可以跳格傳送嗎

TOP

夭壽!越來越複雜,都快看不懂了= =
可以幫忙註解一下嗎@@

TOP

回復 8# mark761222

試試看
  1. Private Sub Workbook_Open()
  2. Dim xlPath As Variant, Ro As Integer
  3. Dim xlFilea, xlFileb, arra, arrb
  4.     xlPath = ThisWorkbook.Path & "\"
  5. xlFilea = ("B.xlsx")
  6. xlFileb = ("C.xlsx")
  7. arra = Sheets("工作表1").Range("A1:E1")
  8. arrb = Sheets("工作表1").Range("A2:E2")
  9.     Workbooks.Open (xlPath & xlFilea)
  10.     With Workbooks(xlFilea).Worksheets("工作表1")
  11.         Set da = .Columns(1).Find(arra(1, 1), , , , , 2)
  12.         If Not da Is Nothing Then GoTo 10
  13.          Ro = .Cells(65535, 1).End(xlUp).Row + 1
  14.          
  15.         .Cells(Ro, 1) = arra
  16.     End With
  17. 10:
  18.     Workbooks(xlFilea).Close True

  19.     Workbooks.Open (xlPath & xlFileb)
  20.     With Workbooks(xlFileb).Worksheets("工作表1")
  21.         Set da = .Columns(1).Find(arra(1, 1), , , , , 2)
  22.         If Not da Is Nothing Then GoTo 10
  23.         Ro = .Cells(65535, 1).End(xlUp).Row + 1
  24.         .Cells(Ro, 1) = arrb
  25.     End With
  26. 20:
  27.     Workbooks(xlFileb).Close True

  28. End Sub
複製代碼

TOP

回復 7# lpk187

謝謝!真的可以了,如果要加上驗證機制應該很難吧
例如A 2015/11/6去偵測B 2015/11/6 與C 2015/11/6  如果有這個日期不新增,有的話新增

謝謝你的指導!

TOP

回復 6# mark761222


   日期還重複2次是你多寫了 For i = 0 To 1 ,把2個For i = 0 To 1...Next刪了吧!
致於為什麼只傳送日期,內容不會傳送
則是.Cells(Ro, 1) = arra 錯誤,你應該要多加Resize範圍給它
.Cells(Ro, 1).Resize(Ubound(arra),Ubound(arra,2)) = arra
.Cells(Ro, 1) = arrb 亦同上

TOP

TO lpk187
又遇到問題了,稍微改了一下程式
假設A 工作表有2筆資料 A1:E1 要送資料到B
A2:E2要送資料C
改了以下程式,但是只傳送日期,內容不會傳送,而且日期還重複2次,是哪裡理解錯誤了嗎

不好意思一值麻煩你
  1. Private Sub Workbook_Open()
  2. Dim xlPath As Variant, Ro As Integer
  3. Dim xlFilea, xlFileb, arra, arrb
  4.     xlPath = ThisWorkbook.Path & "\"
  5. xlFilea = ("B.xlsx")
  6. xlFileb = ("C.xlsx")
  7. arra = Sheets("工作表1").Range("A1:E1")
  8. arrb = Sheets("工作表1").Range("A2:E2")

  9. For i = 0 To 1
  10.     Workbooks.Open (xlPath & xlFilea)
  11.     With Workbooks(xlFilea).Worksheets("工作表1")
  12.          Ro = .Cells(65535, 1).End(xlUp).Row + 1
  13.         .Cells(Ro, 1) = arra
  14.     End With
  15.     Workbooks(xlFilea).Close True
  16. Next
  17. For i = 0 To 1
  18.     Workbooks.Open (xlPath & xlFileb)
  19.     With Workbooks(xlFileb).Worksheets("工作表1")
  20.          Ro = .Cells(65535, 1).End(xlUp).Row + 1
  21.          .Cells(Ro, 1) = arrb
  22.     End With
  23.     Workbooks(xlFileb).Close True
  24. Next

  25. End Sub
複製代碼

TOP

回復 1# mark761222

請參考
http://minyeh187.pixnet.net/blog/post/166816531

TOP

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題