返回列表 上一主題 發帖

[發問] 兩個獨立EXCEL 如何將運算完的資料回傳到主Excel?

回復 8# Scott090
    感謝前輩的回應
類似那樣呼叫但又不大一樣.....差在跨層呼叫
第一條參考我試過.可行
第二條我會在試看看

目前朝Application物件那方面嘗試..也就是.GBKEE大大給的參考下去研究

TOP

回復 3# 502243


   所以我的檔案有回答到你的問題?

TOP

回復 12# zheng211016
差在多一個excel.exe的物件控制..就麻煩了點...網路上探討的好像並不多
也或者是我的查詢時關鍵字沒查到..
不過還是感謝各位前輩的指點協助

TOP

假若拿Sub Ex_newexce1()出來修改一下..
只是單純的複製貼上

Sub Ex_newexce2()
     Dim AR As Variant, Rng(1 To 2) As Range, E As Range

      With Workbooks("a").Sheets(1)
          Set Rng(1) = .Range(“A1”, .Range(“A1”).End(xlDown))   ‘同excel.exe 可以成功
          Set Rng(2) = Workbooks(“a”).Sheets(1).Range(“c1”)       ‘A檔A欄copy A檔C欄      
           Rng(1).Copy Rng(2)
      End With
   
End Sub


Sub Ex_newexce3()
     Dim AR As Variant, Rng(1 To 2) As Range, E As Range

      With Workbooks("a").Sheets(1)
          Set Rng(1) = .Range(“A1”, .Range(“A1”).End(xlDown)) ‘不同excel.exe  會失敗
          Set Rng(2) = Ap.Workbooks(“c”).Sheets(1).Range(“c1”) ‘‘A檔A欄copy C檔C欄
           Rng(1).Copy Rng(2)
      End With
   
End Sub

小弟還在思索著錯誤的原因....

TOP

本帖最後由 GBKEE 於 2019-3-14 10:20 編輯

回復 10# 502243
你只用圖片說明,但如再能加上範例檔祥加說明一切狀況,
回覆者會貼切的回答  


你疑惑<===E.Range("d1")  為何是用E?而不是用Ap.Workbooks("c").Sheets(1)
A的資料 不是要貼上C 的A欄 嗎?
Set Rng = Ap.Workbooks(1).Sheets(1).Range("A1") '指名C檔下
篩選[A欄]>5 取的 C 的D欄 的資料  >>不就  E.Range("d1")

你疑惑  If AR <> "" Then '有資料    <====AR最上面不是已經清空為0了??
這裡啊******
For Each E In Rng
        '大於5 寫上D欄的值  **有
        If E > 5 Then AR = AR & "," & E.Range("d1")
    Next
***********
xApp.App.Quit   或   Ap.Quit      都可


回復 14# 502243
不同excel.exe  間 的物件 無法用Copy
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 15# GBKEE

感謝GBKEE版主大大的幫助..
    目前按照版大的樣本大略修改了一下..如下附檔 Excel VBA.zip (51.75 KB)
    另外會朝 不同excel.exe  間 的物件 控制關鍵字在下去搜尋相關語句
      Ap.Quit    <==這指令用在excel.exe物件裡面 可以讓表面程式看起來不見  卻會殘存excel.exe
    導致如果強制從  工作管理員關閉的話  再次啟動  Sub Ex_開始( )會產生"462"錯誤   <==錯誤發生的原因很多
   
001.png
   不過給的方向還是幫助很大....很感謝.....(畢竟小弟研究了一個禮拜都找不到方向..心理滴咕著)

TOP

本帖最後由 quickfixer 於 2019-3-15 04:18 編輯

回復 16# 502243

你要的不是同一個excel開2個檔互傳,而是2個不同excel.exe互傳資料,對嗎?

參考資料來源
https://www.mobile01.com/topicdetail.php?f=511&t=4737630&p=1
(#244f)
我試過工作管理員不會殘存excel.exe
1.xlsm
  1. Sub test()

  2.     Dim app1 As Object, book1 As Excel.Workbook
  3.     Set app1 = CreateObject("Excel.Application")
  4.     Set book1 = app1.Workbooks.Open(ThisWorkbook.Path & "\" & "2.xlsm")
  5.     app1.Visible = True
  6.    
  7.     Dim sourcedata As Range, targetdata As Range, temp() As Variant
  8.     Set sourcedata = Sheets("a").Range("a1:a5")
  9.     Set targetdata = book1.Sheets("b").Range("a1:a5")
  10.     temp = sourcedata
  11.     targetdata.Value = temp
  12.    
  13.     app1.Run "test"
  14.    
  15.     Set sourcedata = book1.Sheets("b").Range("b1:b5")
  16.     Set targetdata = Sheets("a").Range("c1:c5")
  17.     temp = sourcedata
  18.     targetdata.Value = temp
  19.    
  20.     book1.Close SaveChanges:=False
  21.     app1.Quit
  22.     Set app1 = Nothing
  23.     Set book1 = Nothing
  24.    

  25. End Sub
複製代碼
2.xlsm
  1. Sub test()
  2.    
  3.     For i = 1 To 5
  4.         Sheets("b").Cells(i, 2) = Sheets("b").Cells(i, 1) + Rnd()
  5.     Next i
  6.    
  7. End Sub
複製代碼
excel.zip (24.51 KB)

TOP

回復 16# 502243
    '一般 Module 的程式碼
  1.     Option Explicit
  2.     Public Ap As Object, Aa As Object
  3.    Sub Ex_開始()
  4.          '新開2個Excel 程式
  5.          Set Ap = New Application
  6.         Set Aa = New Application
  7.          Stop '開啟工作管理員看看
  8.         Ap.Visible = True
  9.        Stop '開啟工作管理員看看
  10.         Aa.Visible = True
  11.         Stop '開啟工作管理員看看
  12.          
  13.     End Sub
  14.      Sub Ex_結束()
  15.           Stop '開啟工作管理員看看
  16.           Ap.Quit
  17.           Stop '開啟工作管理員看看
  18.           Aa.Quit
  19.           Stop '開啟工作管理員看看
  20.     End Sub
  21.    
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 17# quickfixer


    感謝quickfixer大大的資料參考
   的確是兩個不同的excel.exe資料互傳....
    原來是要利用set 加上緩衝區...
   屆時我會參考前輩們的模型基板下去做修改調整.....
   萬分感謝~

TOP

本帖最後由 502243 於 2019-3-15 08:43 編輯

回復 18# GBKEE
  1.   '一般 Module 的程式碼
  2. Option Explicit
  3.     Public Ap As Object, Aa As Object
  4.    Sub Ex_開始( )
  5.          '新開2個Excel 程式
  6.          Set Ap = New Application
  7.           Set Aa = New Application
  8.             Stop '開啟工作管理員看看
  9.              Ap.Visible = True
  10.             Stop '開啟工作管理員看看
  11.              Aa.Visible = True
  12.       '  Stop '開啟工作管理員看看         
  13.     End Sub

  14.      Sub Ex_結束( )
  15.           Stop '開啟工作管理員看看
  16.           Ap.Quit
  17.           Stop '開啟工作管理員看看
  18.           Aa.Qui
  19.           Stop '開啟工作管理員看看
  20.     End Sub

  21.     Sub test( )
  22.         Dim app1 As Object, book1 As Excel.Workbook
  23.         Set app1 = CreateObject("Excel.Application")
  24.         app1.Visible = True                 
  25.         app1.Quit
  26.         Set app1 = Nothing
  27.     End Sub
複製代碼
剛試了一下 test可以完全關閉新建立excel.exe  與上面的差異 多了一個set app1=Nothing
所以新建excel物件   建立與關閉不能拆分成兩個副程式?
恩...我在多試幾個看看

TOP

        靜思自在 : 人的心地是一畦田,土地沒有播下好種子,也長不出好的果實。 -
返回列表 上一主題