1

これが私のコードです。PCでは動作しますが、Macでは動作しません。このコードを実行してExcelシートを作成し、名前を付け、タブを追加し、タブの色を変更し、の名前を変更します。上記のタブをクリックし、セルの形式とセルの幅と高さを維持しながらデータを新しいワークシートに置き換えます。

これはPCでは機能しますが、Macに接続すると機能しません。

私は参考文献に入ります、そしてこれは私が見るものです。

ここに画像の説明を入力してください

Ref Edit Controlが表示され、MicrosoftScriptingRuntimeがありません。両方を無効にしましたが、スクリプトでエラーが発生します。

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
4

1 に答える 1

1

MISSING参照は、問題の原因です。そこでチェックマークを外すと、のような基本的なものdateが再び機能し始めます。これらの参照が実行中のコードにとって重要である場合は、Macに相当するものを検索する必要があります

参照の詳細-通常、「欠落」を解決すると修正されますが、ここから

あなたが説明していることは、破損した参照の典型です。これは、参照されたファイルが異なるバージョンであるか、コードが開発されたマシンとクライアントマシンの間の異なる場所にあることが原因である可能性があります。私たちの会社もすべてのマシンを同じように構成するように努めていますが、管理することは本質的に不可能であることがわかりました。

任意のコードモジュールを開きます(または、[デバッグウィンドウを一番上に保持する]オプションを選択していない場合は、Ctrl-Gを使用してデバッグウィンドウを開きます)。[ツール]|[ツール]を選択します メニューバーからの参照。選択したすべての参照を調べます。

選択した参照のいずれかの前に「MISSING:」がある場合は、それらの選択を解除して、ダイアログから戻ります。選択を解除したばかりの参照が本当に必要な場合([すべてのモジュールをコンパイル]を実行することでわかります)、戻ってそれらを再度選択します。

「MISSING:」がない場合は、追加の参照をランダムに選択し、ダイアログから戻ってから、戻って、追加した参照の選択を解除します。それでも問題が解決しない場合は、選択した参照をできるだけ多く選択解除して(Officeではすべての選択を解除できない場合があります)、ダイアログから戻ってから、選択を解除した参照に戻って再度選択します。(注:参照を削除する前に、参照が何であるかを書き留めてください。戻ったときに参照の順序が異なるためです)

はい、Excelがすべての参照を調べる必要がなくなったため、VBA.xxxxとして明確化することができます。

于 2012-09-18T17:26:51.007 に答える