Дата для VBA не работает в Excel 2011?

Вот мой код, который я пытаюсь, который работает BTW на ПК, но не на Mac, чтобы запустить этот код и создать таблицу Excel, названную, добавить вкладку, изменить цвет указанных вкладок, изменить имя указанные вкладки, а затем транспонировать данные, сохраняя при этом формат ячеек, а также ширину и высоту ячеек в новый лист.

Это работает на ПК .... но когда я попадаю на Mac, это не так.

Я вхожу в список литературы, и это то, что я вижу.

enter image description here

Я вижу Ref Edit Control, и Microsoft Scripting Runtime отсутствует. Я отключил оба, и сценарий выдает мне ошибку здесь еще:

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

Ошибка происходит на(Date, "mm-dd-yyyy") В частности,Date раздел. Я не могу понять, почему это происходит честно. Если кто-то может просмотреть это и дать мне ответ и решение, это будет высоко ценится.

Я получаю ошибкуError '9 Subscript Out Of Range Я не вижу причины, по которой эта ошибка появляется только на Mac, а не на ПК.

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
 Matt Ridge18 сент. 2012 г., 15:24
Нет, ошибка типа 9, похоже, что документ создан, но не назван или сохранен. То же самое место, просто не совсем описывающее почему.
 Daniel18 сент. 2012 г., 14:57
Dlls для Windows. Они не должны работать на Mac без каких-либо обходных путей, таких как виртуализация. Тем не менее, я не вижу ничего в вашем коде, что на первый взгляд требует ни одной из этих библиотек. Попробуйте удалить ссылки, и посмотрите, работает ли ваш код.

Ответы на вопрос(1)

Решение Вопроса

MISSING ссылки являются причиной проблем. Снимите галочки там, и основные вещи, такие какdate снова начнет работать. Если эти ссылки имеют решающее значение для кода, который вы работаете, вам придется искать эквиваленты Mac

Подробнее о ссылках - обычно разрешение "Отсутствует" исправляет это, но изВот

То, что вы описываете, типично для испорченных ссылок. Это может быть вызвано ссылочным файлом, являющимся другой версией или в другой расположение между машиной, на которой был разработан код, и клиентские машины. Наша компания также старается сохранить все машины настроенными таким же образом, но я обнаружил, что им практически невозможно управлять.

Откройте любой модуль кода (или откройте окно отладки, используя Ctrl-G, если вы не выбрали "держать окно отладки сверху" опция). Выберите Инструменты | Ссылки из строки меню. Изучите все выбранные ссылки.

Если какая-либо из выбранных ссылок имеет значение «MISSING:» перед ними отмените выбор их и обратно из диалога. Если вам действительно нужны ссылки, вы просто не выбран (вы можете сказать, скомпилировав все модули), вернитесь в и повторно выбрать их.

Если ни один из них не имеет слова «MISSING:», выберите дополнительную ссылку случайным образом, вернитесь назад диалогового окна, затем вернитесь и отмените выбор ссылки, которую вы только что добавили. Если которая не решает проблему, попробуйте отменить выбор как можно большего числа выбранных ссылки, как вы можете (Office может не позволить вам отменить их выбор), отменить диалогового окна, затем вернитесь и снова выберите ссылки, которые вы только что невыбранные. (ПРИМЕЧАНИЕ: перед удалением запишите, что за ссылки их, потому что они будут в другом порядке, когда вы вернетесь)

Да, устранение неоднозначности как VBA.xxxx будет работать, так как Excel больше не должен просмотреть все ссылки.

 Matt Ridge18 сент. 2012 г., 23:08
Уже сделал это, согласно моему сообщению, и я все еще получаю ошибки.
 19 сент. 2012 г., 18:18
@MattRidge, ошибка не в дате, а в формате (), так как считает, что это массив, а не функция. добавил больше информации к ответу

Ваш ответ на вопрос