Board logo

標題: 請問連結另一個檔案不要打開 [打印本頁]

作者: amu1129    時間: 2010-10-4 21:06     標題: 請問連結另一個檔案不要打開

小弟有A檔案想直接讀取B檔案如圖
[attach]2987[/attach][attach]2989[/attach]
原本在2007可以執行
在2003便會有問題了
而且RUN的時候B檔案會打開
可以不要讓它打開
改用按鈕按了才執行嗎
另外我想相同的產品數量加總顯示一次就好如圖
[attach]2988[/attach]
請指點一下,謝謝[attach]2990[/attach]
Private Sub Workbook_Open()
Dim Wb As Workbook
Set Wb = Workbooks.Open("C:\Documents and Settings\123\桌面\Test\B.xls")
For i = 1 To 30
ThisWorkbook.Worksheets("Sheet1").Cells(2, 4 * i - 2) = Wb.Worksheets("Sheet1").Cells(i + 3, 1).Value
If (Wb.Worksheets("Sheet1").Cells(i, 2).Value) Mod 100 = 0 Then
ThisWorkbook.Worksheets("Sheet1").Cells(3, 4 * i - 2) = "(目標 " & (Wb.Worksheets("Sheet1").Cells(i + 3, 2).Value) / 1000 & "k)"
Else
ThisWorkbook.Worksheets("Sheet1").Cells(3, 4 * i - 2) = "(目標 " & (Wb.Worksheets("Sheet1").Cells(i + 3, 2).Value) & "units)"
End If
Next
End Sub
作者: GBKEE    時間: 2010-10-5 09:03

本帖最後由 GBKEE 於 2010-10-5 09:17 編輯

回復 1# amu1129
你的錯誤是 If (Wb.Worksheets("Sheet1").Cells(i+3, 2).Value) Mod 100 = 0 Then 沒有加3 其他都有加3
檔案必須是開啟的 才可以執行. 於程式最後關閉掉就可以
如要用按鈕執行  請 刪掉Sub Workbook_Open 的程式  將程式碼複製到 按鈕的程式裡
另外我想相同的產品數量加總顯示一次就好 程式碼如下:
  1. Private Sub Workbook_Open()
  2. Dim Wb As Workbook, d As Object, i%, ii%
  3. Set Wb = Workbooks.Open("C:\Documents and Settings\123\桌面\Test\B.xls")
  4. Set d = CreateObject("Scripting.Dictionary")
  5. For i = 1 To 30
  6. If d.exists(Wb.Worksheets("Sheet1").Cells(i + 3, 1).Value) = False And Wb.Worksheets("Sheet1").Cells(i + 3, 1) <> "" Then
  7. d(Wb.Worksheets("Sheet1").Cells(i + 3, 1).Value) = ""
  8. ii = ii + 1
  9. ThisWorkbook.Worksheets("Sheet1").Cells(2, 4 * ii - 2) = Wb.Worksheets("Sheet1").Cells(i + 3, 1).Value
  10. If (Wb.Worksheets("Sheet1").Cells(i + 3, 2).Value) Mod 100 = 0 Then
  11. ThisWorkbook.Worksheets("Sheet1").Cells(3, 4 * ii - 2) = "(目標 " & (Wb.Worksheets("Sheet1").Cells(i + 3, 2).Value) / 1000 & "k)"
  12. Else
  13. ThisWorkbook.Worksheets("Sheet1").Cells(3, 4 * ii - 2) = "(目標 " & (Wb.Worksheets("Sheet1").Cells(i + 3, 2).Value) & "units)"
  14. End If
  15. End If
  16. Next
  17. Wb.Close '關閉檔案
  18. End Sub
複製代碼

作者: amu1129    時間: 2010-10-7 21:24

版主~不好意思
我不太懂ii = ii + 1這段的用法耶
我逐段執行大致知道是將重複的產品合一
但是想更清楚為何這樣可以合併
煩請版主幫我指點,謝謝
作者: GBKEE    時間: 2010-10-8 07:55

回復 3# amu1129
If d.exists(Wb.Worksheets("Sheet1").Cells(i + 3, 1).Value) = False And Wb.Worksheets("Sheet1").Cells(i + 3, 1) <> "" Then
當上面的程式碼 為在判斷產品未出現時的條件成立時  執行下面程式碼
d(Wb.Worksheets("Sheet1").Cells(i + 3, 1).Value) = ""
ii = ii + 1   
當第一次執行ii = ii + 1 時 由於程式未於開始時指定值給變數 i, 此時ii為空白的(EMPTY)  所以 ii = 空白 + 1=>1
下一次 判斷產品未出現時的條件成立時  ii = ii (1) + 1 =>2
ThisWorkbook.Worksheets("Sheet1").Cells(2, 4 * ii - 2) = Wb.Worksheets("Sheet1").Cells(i + 3, 1).Value
如此 4 * ii - 2 計算的值才會正確





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