ich bin gerade ein wenig am Verzweifeln. Ich habe vor langer Zeit in Excel 2000 für Windows einen Dialog programmiert um Daten in die dazugehörige Excel Tabelle zu schreiben. Dann wechselten wir auf den Mac, wo das nicht geht, weswegen das Ganze in einer VMWare unter XP und dem gleichen Office weiter betrieben wurde.
Blöderweise muss ich den Rechner jetzt aktualisieren und die VMWare zickt, sie über Virtual Box zum laufen zu bringen und gleichzeitig habe ich festgestellt, dass ich gegebenenfalls mit Office 2019 für Mac eine Chance habe, meine VBA Makros lauffähig Nativ auf dem Mac laufen zu lassen. Blöderweise werden selbst geschriebene Dialoge nicht übernommen. Was zuerst als KO Kriterium für diese Idee wirkte wurde als ich dieses Skript fand: http://www.vbaexpress.com/kb/getarticle.php?kb_id=228 wieder relativiert, allerdings mit ein paar großen Haken:
1. Übertragen der Infos:
Ich muss mit meinem Rechner die Informationen zu den einzeln definierten Feldern scheinbar abtippen, weil ich keine Idee habe, wie ich diese in Lesbarer Form exportieren kann. .frm ist nicht lesbar und lässt sich nicht importieren
2. Einbinden der Vorhandenen Skripte
Dafür wird ja folgender Befehl genutzt:
.InsertLines X, " Worksheets(nSheet).Cells(nActRow, 14).Value = 'X'"
Der VBA Editor mag es aber gar nicht, wenn ich die Eigentlichen Gänsefüßchen um das X wie hier gezeigt durch ' ersetze. Dann müsste ich danach in den eingefügten Zeilen wieder alles bearbeiten. Gibts da einen Escape Character um per Skript das " einfach zu übergeben?3. Irgendwie erschließt sich mir die Syntax nicht
Ich habe versucht das Skript anzupassen und war anfangs extrem begeistert es gefunden zu haben aber hier z.B. fängt das Problem schon an, dass ich z.B. nicht genau weiß, wie ich den zweiten Button anlegen kann und ich hab ne Menge Labels und andere Textboxen und bevor ich alles Abschreibe würde ich gerne wissen wie das alles geht:
'//Make a userform
Set MyUserForm = ActiveWorkbook.VBProject _
.VBComponents.Add(vbext_ct_MSForm)
With MyUserForm
.Properties("Height") = 510
.Properties("Width") = 462
.Properties("StartUpPosition") = 1
On Error Resume Next
.Name = "TestDialog"
.Properties("Caption") = "Sammlungsverzeichnis"
End With
'//Add a Cancel button to the form
Set NewCommandButton1 = MyUserForm.Designer.Controls.Add("forms.CommandButton.1")
With NewCommandButton1
.Caption = "Schliessen"
.Height = 30
.Width = 96
.Left = 324
.Top = 450
.Enabled = True
End With
'//Label zum Dialog hinzufügen
Set NewLabel7 = MyUserForm.Designer.Controls.Add("forms.Label.1")
With NewLabel7
.Caption = "SLG-Nummer:"
.Height = 18
.Width = 84
.Left = 0
.Top = 12
.TextAlign = fmTextAlignRight
End With
'//Textbox für die Sammlungsnummer
Set NewTextbox1 = MyUserForm.Designer.Controls.Add("forms.TextBox.1")
With NewTextbox1
.AutoSize = False
.AutoTab = False
.AutoWordSelect = True
.BackStyle = fmBackStyleOpaque
.BorderStyle = fmBorderStyleNone
.DragBehavior = fmDragBehaviorDisabled
.Enabled = True
.EnterFieldBehavior = fmEnterFieldBehaviorSelectAll
.EnterKeyBehavior = False
.Locked = False
.SpecialEffect = fmSpecialEffectSunken
.Height = 21
.Width = 54
.Left = 96
.Top = 6
End With
'//Add an Speichern button to the form
Set NewCommandButton2 = MyUserForm.Designer.Controls.Add("forms.CommandButton.2")
With NewCommandButton2
.Caption = "Speichern"
.Height = 30
.Width = 96
.Left = 30
.Top = 450
.Enabled = False
End With
Der Dialog wird erstellt, das Label, Textfeld und der erste Button auch, der zweite nicht. Ich dachte mit der Erhöhung der Zahl auf 2 oben in forms.CommandButton würde ich das hinbekommen. In den Beispielen hat der Befehl immer eine 1 hinten dran, was mir komisch erscheint, aber auch irgendwie nicht geklappt hat. ich muss ihn disablen weil der im Ablauf erst aktiviert wird, wenn nicht nur geschaut wird.Wenn meine Idee gar nicht klappen kann aus Eurer Sicht, dann wäre ich auch hier dankbar. Auch der Tipp zu einem anderen Tool, mit dem ich auf dem Mac diese Daten in einer grafischen Oberfläche Pflegen könnte wäre hilfreich. Einzige Hürde, hier müssen abhängig von einer Nummer Bilder angezeigt werden können.
Ganz liebe verzweifelte Grüße
Heike