返回列表 上一主題 發帖

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

兩個xls的工作表資料同步

問題一
假如我有A.xlsx  與B.xlsm (巨集檔)
A.xlsx 有工作表1

B.xlsm 有工作表1,要去抓取所有A的所有工作表1內容到B工作表1 (只要A.xlsx資料有更新B就會更新資料)

問題二

假如我有A.xlsx  與B.xlsm (巨集檔)
A.xlsx 有工作表1

B.xlsm 有工作表1,要去抓取所有A工作表1裡面整合內容如 B整行、D整行、E整行 到B工作表1的 A整行、B整行、C整行 (只要A.xlsx資料有更新B就會更新資料)

麻煩各位大大了

TOP

感謝lpk187!
正在努力理解你寫的程式架構

TOP

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


我有三個EXCEL檔案分別為A B C 如圖
A為計算檔案透過按鈕將資料傳送到B 與 C
判斷B 與 C資料最後一筆資料並填上

有大哥大姐寫過類式的程式嗎

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

回復 7# lpk187

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

謝謝你的指導!

TOP

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

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

回復 12# lpk187


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

TOP

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

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

TOP

回復 15# lpk187


謝謝! 順利運作,但是幾乎看不懂,不知道他的邏輯怎麼去判斷取得整個資料丟到工作表1 、2 、3   程度差太多了@_@

本來想自己改完套用到另一個工作表,看來有些難度,希望等我整理完資料完,能在幫我解答,謝謝

TOP

        靜思自在 : 做好事不能少我一人,做壞事不能多我一人。
返回列表 上一主題