#excel #vba #macos #permissions
Вопрос:
У меня есть скрипт, который генерирует текстовые поля для видео с использованием некоторого входного текста. Код иногда работает, но часто после перезагрузки что-то меняется в разрешениях, и код возвращает ошибку «Отказано в разрешении». Я запустил утилиту диска для восстановления разрешений, добавил excel для полного доступа к диску, попробовал запросить разрешение для нескольких файлов… Я не могу понять, что в конечном итоге позволяет ему работать до следующей перезагрузки. Я видел много дискуссий по подобным проблемам, но ни одно из исправлений, о которых я упоминал, похоже, не работает. Я использую ОС Catalina и Excel для Mac v. 16.49.
Это линия, которая выходит из строя:
chartFrame.Chart.Export strPiece amp; "/" amp; engName amp; "Approaches.png"
Это общий код (я знаю, что он немного грязный, но он работает, когда работает)
Dim kanaName As String
Dim japName As String
Dim engName As String
Dim kanaText As String
Dim kanaText2 As String
Dim WSObj As Object
Dim keySheet As Worksheet
Dim tBox As MSForms.TextBox
Dim boxPos As Range
Dim currentDoc As Worksheet
Dim boxString As String
Dim stringLen As Integer
Dim folderScript As String
Dim strPiece As String
Dim folderString As String
Dim folderCheck As String
Dim chartFrame As ChartObject
Dim colorCheck As String
Dim colorMark As Long
Dim filePermissionCandidates As Variant
Dim fileAccessGranted As Boolean
filePermissionCandidates = Array(ThisWorkbook.Path)
fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates)
'Set up
Set currentDoc = Worksheets(1)
kanaName = currentDoc.Cells(2, 1).Value
japName = currentDoc.Cells(3, 1).Value
engName = currentDoc.Cells(4, 1).Value
kanaText = currentDoc.Cells(2, 2).Value
folderString = "/Users/christopherfinlay/Desktop/DQ Box/Battle/" amp; engName
boxString = kanaName amp; kanaText amp; "!" amp; Chr$(10) amp; japName amp; " ga ora wa reta!" amp; Chr$(10) amp; engName amp; " appeared!" amp; Chr$(10) amp; Chr$(10) amp; "A " amp; engName amp; " appeared!"
stringLen = Len(boxString)
currentDoc.Shapes("TextBox1").DrawingObject.Text = boxString
currentDoc.Shapes.Range(Array("TextBox1")).Select
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, stringLen).Font.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(240, 240, 240)
.Transparency = 0
.Solid
End With
currentDoc.Shapes("TextBox1").Width = 550
currentDoc.Shapes("TextBox1").TextFrame2.AutoSize = msoAutoSizeShapeToFitText
strPiece = MacScript("return POSIX path of (" amp; Chr(34) amp; folderString amp; Chr(34) amp; ")")
folderCheck = Dir(strPiece)
If folderCheck = "" Then
MkDir strPiece
End If
colorCheck = kanaName amp; kanaText
stringLen = Len(colorCheck)
For i = 1 To stringLen
If AscW(Mid(colorCheck, i, 1)) >= 12448 And AscW(Mid(colorCheck, i, 1)) <= 12543 Then
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(i, 1).Font.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(132, 60, 12)
.Transparency = 0
.Solid
End With
ElseIf AscW(Mid(colorCheck, i, 1)) > 12543 Then
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(i, 1).Font.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 112, 192)
.Transparency = 0
.Solid
End With
Else
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(i, 1).Font.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(240, 240, 240)
.Transparency = 0
.Solid
End With
End If
Next
Set chartFrame = ActiveSheet.ChartObjects.Add(Left:=ActiveCell.Left, Width:=currentDoc.Shapes("TextBox1").Width, Top:=currentDoc.Shapes("TextBox1").Top, Height:=currentDoc.Shapes("TextBox1").Height)
chartFrame.ShapeRange.Fill.Visible = msoFalse
chartFrame.ShapeRange.Line.Visible = msoFalse
currentDoc.Shapes("TextBox1").Copy
chartFrame.Activate
ActiveChart.Paste
chartFrame.Chart.Export strPiece amp; "/" amp; engName amp; "Approaches.png"
chartFrame.Delete
Комментарии:
1. Привет, Дэррил Динсье! Наконец, не могли бы вы решить эту проблему?