Вопрос:

Excel для Mac - сбой макроса Excel - работает в Windows

excel vba macos

499 просмотра

1 ответ

6 Репутация автора

Для нашего планирования работы мы создали документ Excel со встроенным макросом, поэтому документ можно экспортировать в определенный формат для импорта в другую программу. Документ был создан на ПК с Windows с последней версией Excel. Макрос отлично работает на Windows. Дома я использую свой Mac. Я могу без проблем редактировать документ, но когда я запускаю макрос, мой Excel всегда вылетает ... Кто-нибудь знает, в чем проблема с Mac-версией?

Я разместил макрос и сообщение об ошибке.

Спасибо! Тим


Это макрос :

Sub Export()

Dim teller As Integer
Dim filename As String
Dim werkblad As Worksheet

'Nieuw werkblad "GALOP" aanmaken
With ThisWorkbook
    Set werkblad = .Sheets.Add(After:=.Sheets(.Sheets.Count))
    werkblad.Name = "GALOP"
End With

'Kopieer headers van "GALOPvar" naar "GALOP"
Sheets("GALOPvar").Range("A1:O1").Copy
Sheets("GALOP").Range("A1").PasteSpecial xlPasteValues

'Persoon per persoon aanmaken in "GALOPvar" en toevoegen aan "GALOP"
'voor PZ Maldegem: beginnen bij lijn 4, verwerken t.e.m. lijn 46 (enkel de even lijnen nemen)
For teller = 2 To 45
    Sheets("GALOPvar").Cells(1, 19).Value = teller
    If Sheets("GALOPvar").Cells(2, 1).Value <> 0 Then
        Sheets("GALOPvar").Range("A2:O63").Copy
        Sheets("GALOP").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats
    End If
    'enkel de even lijnen nemen, dus eentje bijtellen om de oneven lijnen over te slaan
Next teller

Application.CutCopyMode = False

'foutcodes verwijderen, dagdiensten toevoegen na TIR
Call ClearGALOP


'Tabblad "GALOP" verplaatsen naar nieuw werkblad en opslaan
Sheets("GALOP").Move

filename = Application.GetSaveAsFilename(FileFilter:="Excel files (*.xlsx), *.xlsx")

Application.DisplayAlerts = False
ActiveWorkbook.CheckCompatibility = False
ActiveWorkbook.SaveAs filename:=filename, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close False
Application.DisplayAlerts = True

'tabbladen terug inladen voor dropdownlijstje
Application.Calculate

'origineel tabblad "GALOPvar" terug actief zetten
Sheets("GALOPvar").Activate

End Sub

'tabblad "GALOP" bottom-up overlopen en:
'lijnen waar kolom D ("characterization") een error geeft, eruit gooien
'na lijnen waar kolom C ("code") TIR is, dagdienst toevoegen (beperkte uren)
Sub ClearGALOP()
    Dim Firstrow As Long
    Dim Lastrow As Long
    Dim Lrow As Long

    With Sheets("GALOP")
        Firstrow = .UsedRange.Cells(1).Row
        Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row

        For Lrow = Lastrow To Firstrow Step -1
            'tir aanvullen met dagdienst
            If UCase(.Cells(Lrow, "C").Value) = "W" Then
                'kopieer lijn TIR
                .Cells(Lrow, "C").EntireRow.Offset(1).Insert
                .Cells(Lrow, "C").EntireRow.Copy .Cells(Lrow, "C").EntireRow.Offset(1)
                .Cells(Lrow, "C").EntireRow.Offset(1).Insert
                .Cells(Lrow, "C").EntireRow.Copy .Cells(Lrow, "C").EntireRow.Offset(1)
                'wijzig nieuwe TIR in D
                .Cells(Lrow + 1, "C").Value = "MAT"
                .Cells(Lrow + 2, "C").Value = "TIR"
                'wijzig startuur naar 13:00 (=780)
                .Cells(Lrow + 1, "E").Value = 780
                .Cells(Lrow + 2, "E").Value = 900
                'wijzig einduur naar 15:36 (=936)
                .Cells(Lrow + 1, "F").Value = 900
                .Cells(Lrow + 2, "F").Value = 1020
                'geen pauze
                .Cells(Lrow + 1, "G").Value = 0
                .Cells(Lrow + 1, "H").Value = 0
                .Cells(Lrow + 2, "G").Value = 0
                .Cells(Lrow + 2, "H").Value = 0
                'wijzig activitykey naar 542401000000184
                .Cells(Lrow + 1, "I").Value = 543801000000193#
                .Cells(Lrow + 2, "I").Value = 543801000000194#
                'geen maaltijdvergoeding
                .Cells(Lrow + 1, "M").Value = 4
                .Cells(Lrow + 2, "M").Value = 4
            End If

            'errors eruit
            With .Cells(Lrow, "D")
                If IsError(.Value) Then .EntireRow.Delete
            End With

        Next Lrow
    End With
End Sub

Это сообщение об ошибке (часть 1) :

Версия журнала отчетов об ошибках Microsoft: 2.0

Подпись ошибки: Исключение: EXC_BAD_ACCESS ExceptionEnumString: 1 Код исключения: KERN_INVALID_ADDRESS (0x0000000000000000) Дата / Время: 2018-01-07 15:56:10 +0000 Имя приложения: Идентификатор пакета приложения Microsoft Excel: com.microsoft.Excel Подпись приложения: XCEL Битус приложения: x64 Версия приложения: 15.41.0.17120500 Имя разбитого модуля: Версия разбитого модуля Microsoft Excel: 15.41.0.171205 Смещение разбитого модуля: 0x0000000000c7c68f Имя модуля обвинения: Версия модуля обвинения Microsoft Excel: 15.41.0.171205 Несимметричная проверка: : d6e963f03ad36333-dm_1_main LCID приложения: 1043 Дополнительная информация о приложении: Reg = en Loc = 0x0413 Тип сборки: SHIP Сбой потока Указатель стека: 0x_00007ffee3605c90 Аудитория: производственная аудиторияГруппа:Производство AudienceChannel: CC Разбитая нить: 0

Автор: Tim Vervaet Источник Размещён: 07.01.2018 04:27

Ответы (1)


0 плюса

384 Репутация автора

Я столкнулся с подобной проблемой. Можете ли вы попробовать устранить эту строку?

Оригинальный табблад "GALOPvar" Terug Atief Zetten

Листы ( "GALOPvar"). Активировать

У меня был Excel на MacOs сбой на activate.

Еще одна вещь, которую вы можете попробовать, это вставить DoEvents перед activate

Автор: GUI Junkie Размещён: 10.05.2019 11:05
Вопросы из категории :
32x32