[gelöst] Copy Paste Makro
Verfasst: Mo 14. Aug 2023, 13:21
Hallo zusammen,
ich möchte Daten von einer Website rauskopieren, diese in temporär in einen Zellbereich ("GLT_Temp_Input") einfügen, aus diesem Bereich einen Teilbereich ("GLT_TMP_Auslastung") markieren, Punkte durch Komma ersetzen, dann kopieren und im Zielbereich ("GLT_Value1") einfügen. Abschließend den Inhalt im temporären Zellbereich ("GLT_Temp_Input") wieder löschen.
Das Ganze habe ich mit dem Makrorecorder aufgenommen und alles bis auf die Funktion GLT_input_insert und ich kann nicht erkennen, warum dies nicht funktioniert.
Hatte das Ganze ja als ein Makro und somit einer Funktion aufgenommen und weil es nicht funktioniert hat, dann in einzelne Funktionen separiert. Aber auch ohne Erfolg. Weiß auch nicht, wie ich mich dem Problem nähern kann, um es zu erkennen
Bitte um Unterstützung und gern auch Tipps zur Fehleranalyse und vielleicht auch Code Optimierung / Reduzierung.
Vielen Dank
ich möchte Daten von einer Website rauskopieren, diese in temporär in einen Zellbereich ("GLT_Temp_Input") einfügen, aus diesem Bereich einen Teilbereich ("GLT_TMP_Auslastung") markieren, Punkte durch Komma ersetzen, dann kopieren und im Zielbereich ("GLT_Value1") einfügen. Abschließend den Inhalt im temporären Zellbereich ("GLT_Temp_Input") wieder löschen.
Das Ganze habe ich mit dem Makrorecorder aufgenommen und alles bis auf die Funktion GLT_input_insert und ich kann nicht erkennen, warum dies nicht funktioniert.
Hatte das Ganze ja als ein Makro und somit einer Funktion aufgenommen und weil es nicht funktioniert hat, dann in einzelne Funktionen separiert. Aber auch ohne Erfolg. Weiß auch nicht, wie ich mich dem Problem nähern kann, um es zu erkennen

Bitte um Unterstützung und gern auch Tipps zur Fehleranalyse und vielleicht auch Code Optimierung / Reduzierung.
Vielen Dank
Code: Alles auswählen
Sub GLT_input
rem führt die einzelnen Funktionen nacheinander aus
GLT_input_insert
MsgBox ("GLT_input_insert - done")
GLT_input_copy_paste
MsgBox ("GLT_input_copy_paste - done")
GLT_Input_clear
MsgBox ("GLT_input_clear - done")
MsgBox ("done")
End Sub
sub GLT_input_insert
rem ----------------------------------------------------------------------
rem define variables
dim document as Object
dim dispatcher as Object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "GLT_Temp_Input"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem
rem fügt zuvor markierten, kopierten Inhalt aus der Zwischenablage in den Zellbereich "GLT_Temp_Input" ein
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PasteTextImportDialog", "", 0, Array())
rem dispatcher.executeDispatch(document, ".uno:PasteOnlyText", "", 0, Array())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "GLT_TMP_Auslastung"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem sucht und ersetzt Punkt durch Komma im Bereich "GLT_TMP_Auslastung" -> Ist ein Teilbereich aus "GLT_Temp_Input"
rem ----------------------------------------------------------------------
dim args3(20) as new com.sun.star.beans.PropertyValue
args3(0).Name = "SearchItem.StyleFamily"
args3(0).Value = 2
args3(1).Name = "SearchItem.CellType"
args3(1).Value = 0
args3(2).Name = "SearchItem.RowDirection"
args3(2).Value = true
args3(3).Name = "SearchItem.AllTables"
args3(3).Value = false
args3(4).Name = "SearchItem.SearchFiltered"
args3(4).Value = false
args3(5).Name = "SearchItem.Backward"
args3(5).Value = false
args3(6).Name = "SearchItem.Pattern"
args3(6).Value = false
args3(7).Name = "SearchItem.Content"
args3(7).Value = false
args3(8).Name = "SearchItem.AsianOptions"
args3(8).Value = false
args3(9).Name = "SearchItem.AlgorithmType"
args3(9).Value = 0
args3(10).Name = "SearchItem.SearchFlags"
args3(10).Value = 71680
args3(11).Name = "SearchItem.SearchString"
args3(11).Value = "."
args3(12).Name = "SearchItem.ReplaceString"
args3(12).Value = ","
args3(13).Name = "SearchItem.Locale"
args3(13).Value = 255
args3(14).Name = "SearchItem.ChangedChars"
args3(14).Value = 2
args3(15).Name = "SearchItem.DeletedChars"
args3(15).Value = 2
args3(16).Name = "SearchItem.InsertedChars"
args3(16).Value = 2
args3(17).Name = "SearchItem.TransliterateFlags"
args3(17).Value = 1073743104
args3(18).Name = "SearchItem.Command"
args3(18).Value = 3
args3(19).Name = "SearchItem.SearchFormatted"
args3(19).Value = false
args3(20).Name = "SearchItem.AlgorithmType2"
args3(20).Value = 1
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Visible"
args4(0).Value = false
dispatcher.executeDispatch(document, ".uno:SearchResultsDialog", "", 0, args4())
end sub
sub GLT_input_copy_paste
rem ----------------------------------------------------------------------
rem define variables
dim document1 as Object
dim dispatcher as Object
rem ----------------------------------------------------------------------
rem get access to the document
document1 = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem kopiert den Bereich "GLT_TMP_Auslastung" um dann den Inhalt mit der Voreinstellung "nur Werte" in "GLT_Value1" einzufügen
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "GLT_TMP_Auslastung"
dispatcher.executeDispatch(document1, ".uno:GoToCell", "", 0, args5())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document1, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args10(0) as new com.sun.star.beans.PropertyValue
args10(0).Name = "ToPoint"
args10(0).Value = "GLT_Value1"
dispatcher.executeDispatch(document1, ".uno:GoToCell", "", 0, args10())
rem ----------------------------------------------------------------------
dim args6(5) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Flags"
args6(0).Value = "SVD"
args6(1).Name = "FormulaCommand"
args6(1).Value = 0
args6(2).Name = "SkipEmptyCells"
args6(2).Value = false
args6(3).Name = "Transpose"
args6(3).Value = false
args6(4).Name = "AsLink"
args6(4).Value = false
args6(5).Name = "MoveMode"
args6(5).Value = 4
dispatcher.executeDispatch(document1, ".uno:InsertContents", "", 0, args6())
end Sub
sub GLT_input_clear
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem löscht den temp. Inhalt aus dem Bereich "GLT_Temp_Input" und springt zur Zelle "$M$216"
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "GLT_Temp_Input"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "ToPoint"
args8(0).Value = "$M$216"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args8())
end sub