2014-07-24 134 views
0

我有四個子例程,每個子例程都將一個指定的外部文件從該文件複製到工作簿中的一個工作簿中。對於3/4潛艇,這個效果很好。然而,第四個小組卻給了我目的地空白的結果。代碼在所有四個子目錄中都是相同的,只是文件名已更改。我看到可能導致此錯誤的最大區別在於所涉及的源工作簿受到保護。我使用我的sub解鎖它,然後複製這些文件。添加手錶到源顯示了整個範圍內「變體/空」VBA:將單元格從一個工作簿複製到另一個工作簿會產生空白結果

' declare variables 
    Dim financialReportBook As Workbook 
    Set financialReportBook = Workbooks.Open(FileNavPrompt.financialFilePath) 
    Dim financialSheet As Worksheet 
    Set financialSheet = FileNavPrompt.mainBook.Sheets("Financial Status") 
    Dim copyRange As String 
    copyRange = "A1:AA5000" 

' unprotect workbook 
    financialReportBook.Unprotect ("{password removed}")   ' unprotect workbook for copying 

' pull data from report 
    financialSheet.Cells.Clear  ' start with a clean slate 
    financialSheet.Range(copyRange).Value = financialReportBook.Sheets(1).Range(copyRange).Value 
    financialSheet.Range(copyRange).NumberFormat = financialReportBook.Sheets(1).Range(copyRange).NumberFormat         

' close report 
    financialReportBook.Close False 

' unrelated code continues below... 
+0

Q1:爲什麼使用4個獨立的潛艇,當你可以在一個簡單的循環內完成所有操作?問題2:您未提供最低數量的代碼來診斷此問題。特別是'FileNavPrompt'和相關成員是什麼?這是一個自定義的clsas對象還是帶有模塊級變量的單獨模塊(例如'.financialFilePath','.mainBook'等)?如果它正在爲其他3工作,我會採取其中一個,並嘗試循環它... –

+0

我沒有使用循環,因爲我想保持文件操作完全分開,爲了能夠彼此稍後打開/關閉某些進口產品。我想我說過全局變量是什麼,但我一定是把它們遺漏了。 'FileNavPrompt'是另一個連接了全局變量的模塊。它是從哪裏調用的。 'financialFilePath'是一個包含要打開的文件位置的字符串。 'mainBook'是'ThisWorkbook'的簡單引用。 – kfriede

+0

您正在檢查哪條線以查看空白區域? –

回答

0

潛在的問題最終是所述源的工作簿有它在歸屬爲xlVeryHidden索引1片。當我將第一個可見工作表作爲索引1而不是實際索引2時,這引起了混淆。

+0

使用圖紙名稱的好教訓。用戶也可以重新排列工作表,當工作表索引5變成工作表索引3時,你就會變成小溪。 – Brad

+0

好的建議,但不幸的是,在我的情況下,這不是一個選項(除非我使用某種正則表達式),因爲工作表名稱我指的是根據數據被抽取的時間來確定一個日期。我必須確保,在8月份的報告進入後,這一點不會再破壞。 – kfriede

+0

也許是另一張非常隱藏的表格,用於跟蹤表名稱的名稱?似乎即使有一個棘手的命名約定,用戶仍然可以重新排列東西 – Brad

相關問題