Je cours une macro VBA dans Excel 2016 pour Mac. La macro fonctionne sur les plates-formes Windows avec Excel 2016 et sur les plateformes Mac antérieures à la version 2016. Le problème semble spécifique à Excel 2016 pour Mac lorsque vous essayez d'exporter un fichier CSV.Macro VBA dans Excel 2016 pour Mac: SaveAs ne fonctionne pas avec un format de fichier CSV
Le code est censé permettre à l'utilisateur de cliquer sur un bouton, qui exportera ensuite une feuille de calcul active vers un fichier CSV. Alors qu'un problème similaire a été documenté ici (Getting "method saveas of object _workbook failed" error while trying to save an XLSM as CSV), malheureusement, tout en changeant xlCSV
à 6
a travaillé pour eux, cela n'a pas fonctionné pour moi.
Le code fonctionne jusqu'à la ligne ActiveWorkbook.SaveAs Filename:=newFileName, FileFormat:=6, CreateBackup:=False
, qui jette l'erreur:
Run-time error '1004':Method 'SaveAs' of object '_Workbook' failed
Si je change FileFormat
-51
(.xlsx) ou 53
(.xlsm) le code se terminera avec succès. Toutefois, si FileFormat
est défini sur 6
(.csv), le code renvoie l'erreur ci-dessus. Je suis incapable de SaveAs
xlCSV
ou xlCSVMac
.
Mon script complet est ci-dessous:
Sub btnExportCSV_Click()
Dim oldFileName As String
Dim newFileName As String
Dim timeStamp As String
Dim fileAccessGranted As Boolean
Dim filePermissionCandidates
Dim wsPath As String
timeStamp = Format(Now, "yyyymmddhhmmss")
wsPath = Application.ThisWorkbook.Path
oldFileName = ThisWorkbook.FullName
newFileName = Mid(oldFileName, 1, InStrRev(oldFileName, ".") - 1) & timeStamp & ".csv"
' Check if software is Office 2016 for Mac
' Documentation for this comes from https://dev.office.com/blogs/VBA-improvements-in-Office-2016
#If MAC_OFFICE_VERSION >= 15 Then
filePermissionCandidates = Array(wsPath)
fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates)
#End If
Application.DisplayAlerts = False
Sheets("OfflineComments").Activate
Sheets("OfflineComments").Copy
ActiveWorkbook.SaveAs Filename:=newFileName, FileFormat:=6, CreateBackup:=False
ActiveWorkbook.Save
ActiveWindow.Close
MsgBox ("Offline comments exported to " & newFileName)
Application.DisplayAlerts = True
End Sub
J'ai essayé:
- Ajout d'un chemin d'accès complet aux noms de fichiers d'entrée/sortie
- Veiller à ce que la version d'Excel est cochée et autorisations autorisées par l'utilisateur
- Différents types de fichiers pour le paramètre
FileFormat
, mais comme mentionné précédemment, seuls deux types ont réellement fonctionné. - Essayer le code mentionné dans l'article ci-dessus, ce qui n'a pas aidé (et c'est pourquoi je poste le code original ici).
Il y a des informations mises à jour ici, maintenant: http://answers.microsoft.com/en -us/msoffice/forum/msoffice_excel-mso_mac/vba-macro-en-excel-2016-pour-mac-saveas-will-not/86d6855f-241d-4b8d-b233-cccd7184c67b Le problème semble être lié aux nouveaux problèmes d'autorisations qui se posent avec le bac à sable d'Apple, pour ceux qui sont intéressés. – Kate