Я знаю, что этот вопрос задавали несколько раз в различной форме, но я пробовал несколько способов решить эту проблему, но не нашел ни одного, который мог бы мне помочь.
Основная проблема в том, что у меня Excel VBA Пользовательская форма, которая выдает ошибку следующего типа для пользователя Ma c:
"
Run_Time error '429': ActiveX Component Cant't Create Object
"
Я пробовал несколько решений, таких как:
1. Добавление ссылки на регулярное выражение, так как мой код использует регулярные выражения. Но, просматривая различные страницы, я обнаружил, что библиотека объектов регулярных выражений Microsoft vbscript не существует для Ma c.
Так что я перешел по этой ссылке, которая попросила меня загрузить файл .pkg и добавить его в Библиотека VBA, но это показало ошибку типа «Этот файл не поддерживается». RegEx с Excel VBA на Ma c
2.Замена CreateObject
Я перешел по этой ссылке Изменение Excel VBA для MA C
Заменено Установить regex = CreateObject ("VBScript.RegExp") с Dim regex As New VBScript.RegExp
(ЭТО СЛИШКОМ НЕ РАБОТАЕТ )
Код, вызывающий ошибку:
Dim edi_ec, edi_doc, method_implement, van As String
Dim Situacao As String
Dim regex As Object
**Set regex = CreateObject("VBScript.RegExp")** // THIS LINE //
ПОЛНЫЙ КОД:
Dim edi_ec, edi_doc, method_implement, van As String
Dim Situacao As String
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
'Checking the 1st four fields
If TextBox1.Value = "" Then
MsgBox "Company Name Cannot be empty"
TextBox1.SetFocus
Exit Sub
End If
'1. EDI/EC profiles checkboxes conversion to string
edi_ec = ""
If CheckBox1 = True Then
edi_ec = "Edifact"
End If
If CheckBox2 = True Then
If edi_ec = "" Then
edi_ec = "ANSI X12"
Else
edi_ec = edi_ec & ", ANSI X12"
End If
End If
'2. list of documents
Dim trans_std_ver As String
trans_std_ver = ""
trans_std_ver = "Transaction Type 1 :" & Me.TextBox86.Value & " Version Used: " & Me.TextBox87.Value
If TextBox68.Visible = True Then
trans_std_ver = "Transaction Type 2: " & Me.TextBox68.Value & " Version Used: " & Me.TextBox75.Value
End If
'3 Value Added Network Provider
van = ""
If CheckBox25 = True Then
van = "Sterling Commerce"
End If
If CheckBox26 = True Then
If van = "" Then
van = "GXS/Opentext (Edi Express, Tradent or TGMS)"
Else
van = van & ", GXS/Opentext (Edi Express, Tradent or TGMS)"
End If
End If
If CheckBox27 = True Then
If van = "" Then
van = "Inovis"
Else
van = van & ", Inovis"
End If
End If
'4. senders and receivers ID's and Qualifiers for TEST & PRODUCTION
Dim test, production As String
test = "TEST ID 1: " & Me.TextBox46a.Value & " QUALIFIER: " & Me.TextBox47.Value
production = "PRODUCTION ID 1: " & Me.TextBox49.Value & " QUALIFIER: " & Me.TextBox48.Value
If TextBox52.Visible = True Then
test = test & ", TEST ID 2: " & Me.TextBox52.Value & " QUALIFIER: " & Me.TextBox53.Value
production = production & " PRODUCTION ID 2: " & Me.TextBox54.Value & " QUALIFIER: " & Me.TextBox51.Value
End If
'5 Method of communication other than VAN
Dim van_other As String
van_other = ""
If CheckBox30 = True Then
van_other = "AS2"
End If
If CheckBox31 = True Then
If van_other = "" Then
van_other = "FTP(S) / SFTP"
Else
van_other = van_other & ", FTP(S) / SFTP"
End If
End If
Dim comment As String
If TextBox67.Value <> "" Then
comment = TextBox67.Value
End If
'feeding the data to the spreadsheet
RowCount = Worksheets("Sheet1").Range("A1").CurrentRegion.Rows.count
With Worksheets("Sheet1").Range("A1")
.Offset(RowCount, 0).Value = Me.TextBox1.Value
.Offset(RowCount, 1).Value = Me.TextBox2.Value
.Offset(RowCount, 2).Value = Me.TextBox3.Value
.Offset(RowCount, 3).Value = Me.TextBox4.Value
.Offset(RowCount, 4).Value = edi_ec
'.Offset(RowCount, 5).Value = edi_doc
.Offset(RowCount, 5).Value = trans_std_ver
.Offset(RowCount, 6).Value = method_implement
.Offset(RowCount, 7).Value = van
.Offset(RowCount, 8).Value = test
.Offset(RowCount, 9).Value = production
.Offset(RowCount, 10).Value = van_other
.Offset(RowCount, 11).Value = comment
'.Offset(RowCount, 11).value = text
End With
'Clearing the contents of the form on clicking submit
Dim ctl As MSForms.Control
For Each ctl In Me.Controls
Select Case TypeName(ctl)
Case "TextBox"
ctl.text = ""
Case "CheckBox", "OptionButton", "ToggleButton"
ctl.Value = False
Case "ComboBox", "ListBox"
ctl.ListIndex = -1
End Select
Next ctl
Unload Me
End Sub
Как уже было сказано, я перепробовал все возможные способы, но в итоге не нашел решения. Есть ли способ (совместимый как с Windows, так и с Ma c), где библиотеку Regex можно вызывать из программы, так как я должен отправить эту пользовательскую форму некоторым нетехническим людям, которые не имеют ни малейшего представления обо всем этом, кроме пользовательской формы ?
Заранее спасибо.