Ich habe gerade ein kleines Stück Code für meine Firma als eine Art Geschenk für meine Übersetzer Freunde abgeschlossen. Es erzeugt eine Reihe von Schaltflächen aus unserem internen Firmenwörterbuch (Englisch auf der linken Seite, Japanisch auf der rechten Seite), die mit den Suchergebnissen für den ausgewählten Text übereinstimmen. Ich habe gerade einen Tastenkürzel benutzt und jedesmal ausgeführt, wenn ich ein neues Wort durch seine Übersetzung ersetzen möchte. Ich denke, wo es verbessert werden kann, ist in der "Suche" -Funktion in der Excel-Tabelle. Ich bin mir auch nicht sicher, ob es besser ist, zu versuchen, das Übersetzungsblatt die ganze Zeit offen zu lassen oder es jedes Mal öffnen und schließen zu lassen, wenn es benutzt wird. Die Tabelle enthält etwa 10000 Wörter und Sätze, ist also ziemlich groß und wird von mehreren Personen gleichzeitig verwendet. Hat jemand Vorschläge zu diesen zwei Punkten oder andere Vorschläge, wie man das verbessert?Verbesserung der Effizienz von Translation Macro: Verwenden von Suchen in Excel und Öffnen/Schließen des Programms
Sub TranslationsOnRightClick()
'''''''''''''''''''''''''''''''''''Displays Translations From Right Click for a Selection in the Menu Bar. Recommended to map to a quick-key'''''''''''''''''''''''''
Dim oBtn As CommandBarButton
Dim oCtr As CommandBarControl
Dim Current As String
Dim oSheet As Excel.Range
Dim firstAddress As String
Dim oExcel As Excel.Application
Dim sFname As String
Dim oChanges As Excel.Workbook
Dim c As Excel.Range
Dim FoundTextEng As String
Dim FoundTextJap As String
On Error GoTo ErrorHandler
Set oExcel = New Excel.Application
oExcel.Visible = False
''''''''''''''''''''''''''''''''''''''''Insert Source Table Location Below''''''''''''''''''''''''''''''''''''''''''
sFname = "C:\Users\User\Desktop\translations.xlsx"
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set oChanges = oExcel.Workbooks.Open(FileName:=sFname)
Set oSheet = oChanges.ActiveSheet.UsedRange
'Prepping Excel File
For Each oCtr In Application.CommandBars("Text").Controls
If Not oCtr.BuiltIn Then
oCtr.Delete
End If
Next oCtr
'Clear buttons from previous selection
Current = Selection
With oSheet
Set c = .Find(Current)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Set oBtn = Application.CommandBars("Text").Controls.Add(msoControlButton, , , 1)
FoundTextEng = oChanges.ActiveSheet.Cells(c.Row, 1).Value
FoundTextJap = oChanges.ActiveSheet.Cells(c.Row, 2).Value
With oBtn
.Caption = FoundTextEng + " | " + FoundTextJap
.Style = msoButtonCaption
.Tag = FoundTextJap
.OnAction = "NewMacros.TranslationButton"
End With
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
ErrorHandler:
oChanges.Close SaveChanges:=wdDoNotSaveChanges
oExcel.Quit
Exit Sub
lbl_Exit:
oChanges.Close SaveChanges:=wdDoNotSaveChanges
oExcel.Quit
Exit Sub
oChanges.Close SaveChanges:=wdDoNotSaveChanges
oExcel.Quit
End Sub
Sub TranslationButton()
'''''''''''''''''''''''''''''''''''''Inserts Selected Text From Clicking Button Not to be Run Alone''''''''''''''''''''''''''''''''''
Dim cbCtrl As CommandBarControl
Set cbCtrl = CommandBars.ActionControl
Options.ReplaceSelection = True
Selection.TypeText (cbCtrl.Tag)
End Sub
Vielen Dank.
Wenn Sie auf der Suche nach Verbesserungen, um Code, der funktioniert [Code Review] (http: //codereview.stackexchange .com/help/on-topic) könnte ein besserer Ort sein, um zu fragen. Wenn Sie hier nach Meinungen zu Ihrem Projekt suchen, die nicht im Fokus stehen. PS Haben Sie versucht, Googles "Übersetzen Sie mein Blatt" (ich habe nicht). – pnuts
Vielleicht ** Übersetzungen.xlsx ** in Excel AddIn mit Änderungen am Code? Auf diese Weise wird die Übersetzung nur einmal geöffnet. Und begrenzen Sie die * .Find (...) * nur auf Spalte 1? Alternativ können Sie alle Spalten A: B in den Speicher laden, anstatt sie zu öffnen und bei jedem Anruf zu suchen. – PatricK
Haben Sie den eingebauten [Übersetzer] (https://www.microsoft.com/en-us/translator/excel.aspx) versucht? –