返回列表 上一主題 發帖

[發問] 請高人幫忙除錯,謝謝~

回復 8# kimbal


  Sub txet1()
  P = Format(Date, "m") & "-" & Format(Date, "d") & "-" & Format(Date, "Y")
VBA.FileCopy "Y:\2012\payment 2012\Outstanding payment ss 2012\Dec 2012\Outstanding Payments " & P & ".xlsm", "C:\users\patrick.hkg\desktop\outstanding payments.xlsm"
End Sub

我的file 名是 Outstanding Payments  12-4-2012
run 是出現run-time error '53': file not found

請問是哪裡出錯了?

TOP

[發問] 請高人幫忙除錯,謝謝~

01.Option Explicit

02.Sub Ex()

03.   Dim Rng As Range

04.   'With Workbooks.Open("C:\USER\DESTOP\E.XLSX").Sheets("2012") '檔案未開啟時用此程式碼

05.   With Workbooks("E.XLSX").Sheets("2012")                      '檔案已開啟時用此程式碼

06.        'A2:AM2 to A100:AM100 是Y:\2012\A.XLSX (2012) 的資料

07.        Set Rng = .[A2]

08.        With Workbooks.Open("Y:\2012\A.XLSX").Sheets("2012")    '檔案開啟

09.            .[A100:AM100].Copy Rng   “請問如果我的資料不停增加,超過100列,這句是不是需要改?

10.           .Parent.Close False                                  '檔案關閉

11.        End With

12.        'A101:AM101 to A150:AM150是C:\2012\B.XLSX (Nov)的資料

13.        Set Rng = Rng.End(xlDown).Offset(1)  

14.        With Workbooks.Open("Y:\2012\A.XLSX").Sheets("Nov")    '檔案開啟

15.            .[A150:AM150].Copy Rng   “請問如果我的資料不停增加,超過150列,這句是不是需要改?

16.           .Parent.Close False                                  '檔案關閉

17.        End With

18.        'A151:AM151 to A270:AM270是Z:\2012\C.XLSX (2012) 的資料

19.        Set Rng = Rng.End(xlDown).Offset(1)

20.        With Workbooks.Open("Y:\2012\A.XLSX").Sheets("2012")    '檔案未開啟

21.            .[A270:AM270].Copy Rng   “請問如果我的資料不停增加,超過270列,這句是不是需要改?

22.           .Parent.Close False                                  '檔案關閉

23.        End With

24.    End With

25.End Sub



Set Rng = Rng.End(xlDown).Offset(1)  這句出現run-time error '1004' application-defined or object-defined error
.[A100:AM100].Copy Rng   “請問如果我的資料不停增加,超過100列,這句是不是需要改?
.[A150:AM150].Copy Rng   “請問如果我的資料不停增加,超過150列,這句是不是需要改?
.[A270:AM270].Copy Rng   “請問如果我的資料不停增加,超過270列,這句是不是需要改?

請教各位高手解決問題

1)Sub txet1()
   P = Format(Date, "m") & "-" & Format(Date, "d") & "-" & Format(Date, "Y")
VBA.FileCopy "Y:\2012\payment 2012\Outstanding payment ss 2012\Dec 2012\Outstanding Payments " & P & ".xlsm", "C:\users\patrick.hkg\desktop\outstanding payments.xlsm"
End Sub

我的file 名是 Outstanding Payments  12-4-2012
run 是出現run-time error '53': file not found   請問是哪裡出錯了?
p 需要SET什麼嗎?DIM P AS STRING 之類嗎?

2)
Sub txet1()
FileCopy "W:\PIHK\NEW 香港辦公室正本收放單記錄-FROM 01-MAR-2012 to current(updated).xlsx", "C:\Users\patrick.HKG\Desktop\NEW 香港辦公室正本收放單記錄-FROM 01-MAR-2012 to current(updated).xlsx"
End Sub
是否因為file 名太長或者什麼原因,這句出現錯誤?或者是否因為我同時copy 另外一個Y server所以不行?

3)另外請問如果copy不同的server會有問題嗎?
例如:
Y:\2012\NOV\1.XLSX
X:\SHIPMENT\A.XLSX

或者可否將不同的server內不同的excel,不同的sheet,copy在另外一個excel可以嗎?
括號內代表sheet名
Y:\2012\shipment 2012\Mainland ETA Update.xlsx (MAINLAN ETA)
Y:\2012\payment 2012\One Time Deposit list.xlsx (NOV)
Y:\2012\payment 2012\payment report 2012.xlsx (2012)
Y:\2012\claim 2012\Claim control 20100106.xlsx(2012)
Y:\2012\shipment 2012\HK ETA update.xlsx(HK ETA)
W:\PIHK\NEW 香港辦公室正本收放單記錄-FROM 01-MAR-2012 to current(updated).xlsx(RECEIVE)
Y:\2012\contract record 2012\daily doc.xlsx (DAILY DOCS)
Y:\2012\shipment 2012\ORACLE\ORACLESS 11-28 .xlsx(ORACLESS)

將以上的sheet 同時copy 在下面excel內可以嗎?每個sheet自動分開,用它們的excel名來命名sheet名
C:\Users\patrick.HKG\Desktop\Master.xlsx

TOP

回復 11# 198188
我的file 名是 Outstanding Payments  12-4-2012
run 是出現run-time error '53': file not found

請檢查檔名
  1. Option Explicit
  2. Sub txet1()
  3.   Dim P As String, xfile As String
  4.   '我的file 名是 "Outstanding Payments  12-4-2012"
  5.   xfile = "Outstanding Payments  12-4-2012"  '
  6.   P = Format(Date, "M-D-YYYY")
  7.   P = "Outstanding Payments " & P & ".xls"
  8.   MsgBox xfile = P   '經比對 是 False 兩字串不相同
  9. End Sub
複製代碼

TOP

回復 13# GBKEE


  那麼是不是程式有問題,需要更改?

TOP

回復 13# GBKEE


    Option Explicit

Sub Ex()

   Dim Rng As Range

   'With Workbooks.Open("C:\Users\patrick.HKG\Desktop\copy.xlsm").Sheets("2012") '檔案未開啟時用此程式碼

   With Workbooks("copy.xlsm").Sheets("2012")                      '檔案已開啟時用此程式碼

        'A2:AM2 to A100:AM100 是Y:\2012\A.XLSX (2012) 的資料

        Set Rng = .[A2]  '第一個Rng

        With Workbooks.Open("C:\Users\patrick.HKG\Desktop\1.XLSX").Sheets("sheet1")    '檔案開啟

            .[A100:AM100].Copy Rng

           .Parent.Close False                                  '檔案關閉

       End With

        'A101:AM101 to A150:AM150是C:\2012\B.XLSX (Nov)的資料

        Set Rng = Rng.End(xlDown).Offset(1)  '第二個Rng

        With Workbooks.Open("C:\Users\patrick.HKG\Desktop\2.XLSX").Sheets("sheet1")    '檔案開啟

            .[A150:AM150].Copy Rng

           .Parent.Close False                                  '檔案關閉

        End With

        'A151:AM151 to A270:AM270是Z:\2012\C.XLSX (2012) 的資料

        Set Rng = Rng.End(xlDown).Offset(1) '第三個Rng

        With Workbooks.Open("C:\Users\patrick.HKG\Desktop\3.XLSX").Sheets("sheet1")    '檔案未開啟

            .[A270:AM270].Copy Rng

           .Parent.Close False                                  '檔案關閉

        End With

    End With

End Sub

由於三個copy的對象每天都會增加資料,列數越來越多,下面這幾句需要改嗎?每個對象都是把第二列到最後一筆的資料copy過去
.[A100:AM100].Copy Rng
.[A150:AM150].Copy Rng
.[A270:AM270].Copy Rng

另外三個copy的對象的第一列不想copy過去,效果如下:
1.xlsx
SO Number        Acct Name        Deposit                      Ordered Date
207155                             ZCJ                                                 30-Oct-12
209428                             LJS                            30122.43                      7-Nov-12
200925                             LJH                            30000.77                      20-Jan-12
202101                         HAPPY TRADE            30000                      24-Feb-12
203906                            DFY                            30000                     11-May-12
208562                        ZWM2                                                 12-Oct-12
201532                            WGD                                                 10-Feb-12

2.xlsx
SO Number        Acct Name        Deposit                      Ordered Date
205218                         FZJ                                                                  26-Jan-12
204756                         CZX                                                                21-Oct-12
208563                         ZWM2                                                           19-Feb-12
207898                         ZWM2                                                           15-Feb-12

3.xlsx
SO Number        Acct Name        Deposit                      Ordered Date
205976                HMQ                            79983.09                      16-Jul-12
206034                           HMQ                            79983.09               16-Jul-12
203857                           LSH                            79974.19                       3-May-12
203858                           LSH                            79974.19                       3-May-12


copy.xlsm
SO Number        Acct Name        Deposit                      Ordered Date
207155                             ZCJ                                                 30-Oct-12
209428                             LJS                            30122.43                      7-Nov-12
200925                             LJH                            30000.77                      20-Jan-12
202101                         HAPPY TRADE            30000                      24-Feb-12
203906                            DFY                            30000                     11-May-12
208562                        ZWM2                                                 12-Oct-12
201532                            WGD                                                 10-Feb-12
205218                         FZJ                                                                  26-Jan-12
204756                         CZX                                                                21-Oct-12
208563                         ZWM2                                                           19-Feb-12
207898                         ZWM2                                                           15-Feb-12
205976                HMQ                            79983.09                      16-Jul-12
206034                           HMQ                            79983.09               16-Jul-12
203857                           LSH                            79974.19                       3-May-12
203858                           LSH                            79974.19                       3-May-12

TOP

本帖最後由 GBKEE 於 2012-12-4 13:54 編輯

回復 1# 198188
試試看
  1. Option Explicit
  2. Sub EX()
  3.    Dim Rng(1 To 2) As Range
  4.    'With Workbooks.Open("C:\USER\DESTOP\E.XLSX").Sheets("2012") '檔案未開啟時用此程式碼
  5.    With Workbooks("E.XLSX").Sheets("2012")                      '檔案已開啟時用此程式碼
  6.         
  7.        .Range("A1").CurrentRegion.Offset(1) = ""                '清除舊資料
  8.         
  9.         'A2:AM2 to A100:AM100 是Y:\2012\A.XLSX (2012) 的資料
  10.         Set Rng(1) = .[A2]                                      '第一個Rng(1)
  11.         With Workbooks.Open("Y:\2012\A.XLSX").Sheets("2012")    '檔案開啟
  12.             Set Rng(2) = .[A2:AM2]
  13.             Set Rng(2) = .Range(Rng(2), .[A2].End(xlDown))     '資料不停增加: 到最後的資料
  14.             Rng(2).Copy Rng(1)
  15.            .Parent.Close False                                  '檔案關閉
  16.         End With
  17.         'A101:AM101 to A150:AM150是C:\2012\B.XLSX (Nov)的資料
  18.         Set Rng(1) = Rng(1).End(xlDown).Offset(1)               '第二個Rng(1)
  19.         With Workbooks.Open("Y:\2012\A.XLSX").Sheets("Nov")     '檔案開啟
  20.             Set Rng(2) = .[A101:AM101]
  21.             Set Rng(2) = .Range(Rng(2), .[AM101].End(xlDown))   '資料不停增加: 到最後的資料
  22.             Rng(2).Copy Rng(1)
  23.            .Parent.Close False                                  '檔案關閉
  24.         End With
  25.         'A151:AM151 to A270:AM270是Z:\2012\C.XLSX (2012) 的資料
  26.         Set Rng(1) = Rng(1).End(xlDown).Offset(1)              '第三個Rng(1)
  27.         With Workbooks.Open("Y:\2012\A.XLSX").Sheets("2012")    '檔案未開啟
  28.             Set Rng(2) = .[A151:AM151]                          '第二列 開始
  29.             Set Rng(2) = .Range(Rng(2), .[AM151].End(xlDown))   '資料不停增加: 到最後的資料
  30.            .Parent.Close False                                  '檔案關閉
  31.         End With
  32.     End With
  33. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2012-12-4 14:05 編輯

回復 15# 198188
你的檔案名稱最好不要有空格,容易在輸入檔名造成不正確,所以系統會找不到檔案
將檔案名稱修正好,再測試看看

TOP

回復 18# GBKEE


    Sub txet1()
'單純複製更名
P = Format(Date, "m") & "-" & Format(Date, "d") & "-" & Format(Date, "Y")

VBA.FileCopy "Y:\2012\payment 2012\Outstanding payment ss 2012\Dec 2012\OutstandingPayments " & P & ".xlsm", "C:\users\patrick.hkg\desktop\outstandingpayments.xlsm"
End Sub

我將空格去掉後,也不行?file 名:OutstandingPayments12-4-2012.XLSM

TOP

回復 17# GBKEE


    01.Option Explicit

02.Sub EX()

03.   Dim Rng(1 To 2) As Range

04.   'With Workbooks.Open("C:\USER\DESTOP\E.XLSX").Sheets("2012") '檔案未開啟時用此程式碼

05.   With Workbooks("E.XLSX").Sheets("2012")                      '檔案已開啟時用此程式碼

06.        

07.       .Range("A1").CurrentRegion.Offset(1) = ""                '清除舊資料

08.        

09.        'A2:AM2 to A100:AM100 是Y:\2012\A.XLSX (2012) 的資料

10.        Set Rng(1) = .[A2]                                      '第一個Rng(1)

11.        With Workbooks.Open("Y:\2012\A.XLSX").Sheets("2012")    '檔案開啟

12.            Set Rng(2) = .[A2:AM2]

13.            Set Rng(2) = .Range(Rng(2), .[A2].End(xlDown))     '資料不停增加: 到最後的資料

14.            Rng(2).Copy Rng(1)

15.           .Parent.Close False                                  '檔案關閉

16.        End With

17.        'A101:AM101 to A150:AM150是C:\2012\B.XLSX (Nov)的資料

18.        Set Rng(1) = Rng(1).End(xlDown).Offset(1)               '第二個Rng(1)

19.        With Workbooks.Open("Y:\2012\B.XLSX").Sheets("Nov")     '檔案開啟

20.            Set Rng(2) = .[A101:AM101]

21.            Set Rng(2) = .Range(Rng(2), .[AM101].End(xlDown))   '資料不停增加: 到最後的資料

22.            Rng(2).Copy Rng(1)

23.           .Parent.Close False                                  '檔案關閉

24.        End With

25.        'A151:AM151 to A270:AM270是Z:\2012\C.XLSX (2012) 的資料

26.        Set Rng(1) = Rng(1).End(xlDown).Offset(1)              '第三個Rng(1)

27.        With Workbooks.Open("Z:\2012\C.XLSX").Sheets("2012")    '檔案未開啟

28.            Set Rng(2) = .[A151:AM151]                          '第二列 開始

29.            Set Rng(2) = .Range(Rng(2), .[AM151].End(xlDown))   '資料不停增加: 到最後的資料

30.           .Parent.Close False                                  '檔案關閉

31.        End With

32.    End With

33.End Sub

這裡有個誤會,我的意思是說copy的資料不知道是多少,之前提出的100,50 ,120是舉例。
With Workbooks.Open("Y:\2012\A.XLSX").Sheets("2012")  自動從第二列開始copy過去,copy 的位置從第二列開始順序往下copy ,直到 A.XLSX最後一列的資料,
With Workbooks.Open("Y:\2012\B.XLSX").Sheets("Nov")    自動從第二列開始copy過去,copy 的位置承接上一個FILE A.XLSX的最後一列之後,直到 B.XLSX最後一列的資料,
With Workbooks.Open("Z:\2012\C.XLSX").Sheets("2012")  自動從第二列開始copy過去,copy 的位置承接上一個FILE B.XLSX的最後一列之後,直到 C.XLSX最後一列的資料,

TOP

        靜思自在 : 地上種了菜,就不易長草;心中有善,就不易生惡。
返回列表 上一主題