2012-09-18 120 views
1

這裏是我的代碼,我正在嘗試,它可以在PC上運行,但不能在Mac上運行此代碼,並創建一個Excel表單,命名,添加一個選項卡,更改所述選項卡的顏色,更改然後調換數據,同時將單元格的格式以及單元格的寬度和高度保持爲新的工作表。VBA無法在Excel 2011中工作的日期?

這可以在PC上運行......但是當我進入Mac時,它不會。

我進入參考文獻,這就是我所看到的。

enter image description here

我見參考文獻編輯控件,以及Microsoft腳本運行時失蹤。我都停用了,和腳本在這裏給我一個錯誤還是:

wbBK2.SaveAs Dir & Application.PathSeparator & "Open Order Report -" & Format(Date, "mm-dd-yyyy") & ".xlsx" 

錯誤發生在(Date, "mm-dd-yyyy")具體的日期部分。我無法弄清楚爲什麼這是真的發生。如果有人能仔細閱讀並給我一個答案和解決方案,我們將不勝感激。

我得到的錯誤是Error '9 Subscript Out Of Range我看不到這個錯誤只顯示在Mac上,而不是PC上的原因。

Option Explicit 

Sub OpenOrderReportExport() 

    Dim wsJL As Worksheet 'Jobs List 
    Dim wsPOT As Worksheet 'PO Tracking 
    Dim wsTNO As Worksheet 'Tel-Nexx OOR 
    Dim wsDOO As Worksheet 'Dakota OOR 
    Dim wbBK1 As Workbook 'Open Order Report 
    Dim wbBK2 As Workbook 'New Workbook 
    Dim wsWS1 As Worksheet 'Sheet1 
    Dim wsWS2 As Worksheet 'Sheet2 
    Dim wsWS3 As Worksheet 'Sheet3 
    Dim wsWS4 As Worksheet 'Sheet4 
    Dim CurrentFile As String, NewFileType As String, NewFile As String, Dir As String, lastrow As Long 

    Set wsJL = Sheets("Jobs List")  'Jobs List 
    Set wsPOT = Sheets("PO Tracking") 'PO Tracking 
    Set wsTNO = Sheets("Tel-Nexx OOR") 'Tel-Nexx OOR 
    Set wsDOO = Sheets("Dakota OOR") 'Dakota OOR 
    Set wbBK1 = ThisWorkbook 
    Set wbBK2 = Workbooks.Add   'New Workbook 
    Set wsWS1 = wbBK2.Sheets("Sheet1") 'Sheet1 
    Set wsWS2 = wbBK2.Sheets("Sheet2") 'Sheet2 
    Set wsWS3 = wbBK2.Sheets("Sheet3") 'Sheet3 


     Application.ScreenUpdating = False ' Prevents screen refreshing. 
     CurrentFile = ThisWorkbook.FullName 
     NewFileType = "Excel Files 2007 (*.xlsx)" 
     Dir = ThisWorkbook.path & Application.PathSeparator & "Reports" 
     wbBK2.SaveAs Dir & Application.PathSeparator & "Open Order Report -" & Format(Date, "mm-dd-yyyy") & ".xlsx" 
     Sheets.Add After:=Sheets(Sheets.Count) 

    Set wsWS4 = wbBK2.Sheets("Sheet4") 'Sheet4 

     With wbBK2 
      Dim Sht As Worksheet 
       For Each Sht In Worksheets 
        Sht.Tab.Color = 255 
       Next 
     End With 

     Sheets("Sheet1").Name = "Jobs List" 
     Sheets("Sheet2").Name = "PO Tracking" 
     Sheets("Sheet3").Name = "Dakota OOR" 
     Sheets("Sheet4").Name = "Tel-Nexx OOR" 

     With wbBK1 
      'Jobs List Export 
      lastrow = wsJL.Range("B" & Rows.Count).End(xlUp).Row 
      wsJL.Range("A2:N2").Copy 
      wsWS1.Range("A1").PasteSpecial xlPasteAll 
      wsJL.Range("A3:N" & lastrow).Copy 
      wsWS1.Range("A2").PasteSpecial xlPasteValuesAndNumberFormats 
      wsWS1.Range("A2").PasteSpecial xlPasteColumnWidths 
      wsJL.Range("B3:N" & lastrow).Copy 
      wsWS1.Range("B2").PasteSpecial xlPasteFormats 
      wsWS1.Columns("A").Delete 

      'Tel-Nexx Export 
      lastrow = wsTNO.Range("B" & Rows.Count).End(xlUp).Row 
      wsTNO.Range("A2:Q2").Copy 
      wsWS2.Range("A1").PasteSpecial xlPasteAll 
      wsTNO.Range("A3:Q" & lastrow).Copy 
      wsWS2.Range("A2").PasteSpecial xlPasteValuesAndNumberFormats 
      wsWS2.Range("A2").PasteSpecial xlPasteColumnWidths 
      wsTNO.Range("B3:Q" & lastrow).Copy 
      wsWS2.Range("B2").PasteSpecial xlPasteFormats 
      wsWS2.Columns("A").Delete 

      'Dakota Export 
      lastrow = wsDOO.Range("B" & Rows.Count).End(xlUp).Row 
      wsDOO.Range("A2:O2").Copy 
      wsWS3.Range("A1").PasteSpecial xlPasteAll 
      wsDOO.Range("A3:O" & lastrow).Copy 
      wsWS3.Range("A2").PasteSpecial xlPasteValuesAndNumberFormats 
      wsWS3.Range("A2").PasteSpecial xlPasteColumnWidths 
      wsDOO.Range("B3:O" & lastrow).Copy 
      wsWS3.Range("B2").PasteSpecial xlPasteFormats 
      wsWS3.Columns("A").Delete 

      'PO Tracking Export 
      lastrow = wsPOT.Range("B" & Rows.Count).End(xlUp).Row 
      wsPOT.Range("A2:K2").Copy 
      wsWS4.Range("A1").PasteSpecial xlPasteAll 
      wsPOT.Range("A3:K" & lastrow).Copy 
      wsWS4.Range("A2").PasteSpecial xlPasteValuesAndNumberFormats 
      wsWS4.Range("A2").PasteSpecial xlPasteColumnWidths 
      wsPOT.Range("B3:K" & lastrow).Copy 
      wsWS4.Range("B2").PasteSpecial xlPasteFormats 
      wsWS4.Columns("A").Delete 
     End With 

     With wsWS1 
      .Activate 
      .Range("A1").Select 
     End With 
End Sub 
+0

Dlls適用於Windows。他們不應該在沒有采取某種解決方案的情況下在Mac上工作,例如虛擬化。但是,我沒有看到代碼中的任何內容,乍一看需要這些DLL中的任何一個。嘗試刪除引用,並查看您的代碼是否有效。 –

+0

不,錯誤類型9,看起來像創建文檔,但沒有命名或保存。所以同樣的地方,只是沒有描述爲什麼。 –

回答

1

MISSING引用是什麼出現了問題。刪除那裏的複選標記,像date這樣的基本信息將會重新開始工作。如果這些引用是對正在運行的關鍵代碼,你將不得不尋找出了Mac等同

更多的引用 - 通常解決「失蹤」修復它,但是,從here

你描述是腐敗引用的典型代碼。 這可能是由於引用文件是其他版本或開發代碼的機器與客戶機之間的不同位置 引起的。我們公司也試圖以同樣的方式保留所有配置爲 的機器,但我發現它基本上不可能管理。

打開任何代碼模塊(或者打開調試窗口,使用Ctrl-G,前提是您沒有選擇「保持調試窗口在頂部」選項) 。選擇工具| 菜單欄中的參考。檢查所有選定的參考。

如果任何選定的參考文件在其前面有「MISSING:」,請取消選擇它們,然後退出對話框。如果您確實需要參考文件 只需取消選擇(您可以通過編譯所有模塊進行分析),請返回 並重新選擇它們。

如果沒有「MISSING:」,請隨機選擇其他參考,退出對話框的 ,然後返回並取消選擇剛添加的參考。如果 不能解決問題,請嘗試取消選擇儘可能多的所選 引用(Office可能不會讓您取消全部選擇),退出對話框的 ,然後返回並重新選擇引用只是 未選中。(注意:請在刪除 之前寫下它們的參考文獻,因爲它們在返回時會有不同的順序)

是的,因爲VBA.xxxx將會消失,因爲Excel不再需要 查看所有參考文獻。

+0

已經做到了這一點,根據我的文章所述,我仍然有錯誤。 –

+0

@MattRidge,錯誤不是日期,而是格式(),因爲它認爲它是一個數組,而不是函數。爲答案增加了更多信息 – SeanC