Ciao a tutti,
ho un problema con una macro Excel che ho scritto scopiazzando su internet (non sono un esperto di vba). La macro serve per copiare il contenuto della clipboard nel foglio excel (a partire dalla cella selezionata) dividendo tale contentuo per colonne utilizzando Tab e Spazi come separatori.
La macro ha sempre funzionato bene ma da quando ho preso un nuovo mac, alla prima invocazione della macro compare la finestra di errore: "Errore di runtime 445. Azione non valida per l'oggetto".
Chiusa la finestra di errore, la macro funziona correttamente fino a quando non chiudo excel.
Qualcuno di voi ha idea del perchè la prima invocazione della macro genera quell'errore? Ho un mac con Catalina e uso office 2019. La macro è stata copiata nel modulo Personal.xlbx.
Vi riporto di seguito il codice della macro.
Codice:
Sub incollaPerTABeSPAZI()
'
' incollaPerTABeSPAZI Macro
' incolla il testo formattato in base ai TAB e agli spazi
'
' Scelta rapida da tastiera: Opzione+Cmd+v
'
Dim objData As New MSForms.DataObject
Dim strText As String
Dim text_string As String
Dim stringaRipulita As String
Dim WrdMatrix As Variant
Dim myCell As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
objData.GetFromClipboard
strText = objData.GetText()
stringaRipulita = CleanString(strText)
WrdMatrix = SplitSplit(stringaRipulita)
DumpAry WrdMatrix
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.Calculate
End Sub
Public Function SplitSplit(ByRef Delimited As String) As Variant
Dim Rows() As String
Dim AryOfArys As Variant
Dim I As Long
Rows = Split(Delimited, vbNewLine)
ReDim AryOfArys(UBound(Rows))
For I = 0 To UBound(Rows)
AryOfArys(I) = Split(Rows(I), " ")
Next
SplitSplit = AryOfArys
End Function
Public Function CleanString(strSource As String) As String
On Error GoTo CleanStringErr
' convert tabs to spaces first
strSource = Replace(strSource, vbTab, " ")
' convert all CRLFs to spaces
' strSource = Replace(strSource, vbCrLf, " ")
' Find and replace any occurences of multiple spaces
Do While (InStr(strSource, " "))
' if true, the string still contains double spaces,
' replace with single space
strSource = Replace(strSource, " ", " ")
Loop
' Remove any leading or training spaces and return
' result
CleanString = Trim(strSource)
Exit Function
CleanStringErr:
' Insert error-handling code here
End Function
Public Sub DumpAry(ByRef AryOfArys As Variant)
Dim Row As Long, Col As Long
Dim strg As String
Dim myCell As Range
Dim counter As Long
Set myCell = ActiveCell
Col = 0
For Row = 0 To UBound(AryOfArys)
For Col = 0 To UBound(AryOfArys(Row))
' strg = strg & " - " & AryOfArys(Row)(Col)
myCell(Row + 1, Col + 1) = AryOfArys(Row)(Col)
Next
' Debug.Print strg
' strg = ""
Next
errHandler:
Application.ScreenUpdating = True
End Sub