私はこれを2日間続けようとしています: MacでLibreOffice 5.4を使って作業しています。マクロにフィルタを含むLibreOffice
私は、複数の予定、日付などを含むCSVファイルを持っています。 このファイルを開く際に必要なものは、今日のすべての予定をフィルタリングしています。私がこれまでにしてきたことは、すべての行をチェックし、一致する場合は1
を最後の行に追加し、今日が今日でない場合は0
を追加するということです。
実際に私は自分の行動を記録しているので、私の現在のマクロは最適ではないので、私はそれを投稿していません。
https://picload.org/thumbnail/rwwiiaaa/image.jpg ここに表の一部の写真があります。 これはこれまでのところ、私のマクロです:
sub csvfilter
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 = "$AI$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "=TEXT(TODAY();"+CHR$(34)+"YYYY-MM-DD"+CHR$(34)+")"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "StringName"
args4(0).Value = "=IF(AI$1=LEFTB(C2;10);"+CHR$(34)+"1"+CHR$(34)+";"+CHR$(34)+"0"+CHR$(34)+")"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args4())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ToPoint"
args6(0).Value = "$AI$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())
oSheet = thisComponent.sheets(0)
ocursor = oSheet.createCursor()
ocursor.gotoStart()
ocursor.gotoEndofUsedArea(false)
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "EndCell"
args7(0).Value = "$AI" & ocursor.getRangeAddress.endRow+1
dispatcher.executeDispatch(document, ".uno:AutoFill", "", 0, args7())
rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "ToPoint"
args8(0).Value = "$AI$2:$AI$18"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args8())
rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "ToPoint"
args9(0).Value = "$AI$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args9())
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:DataFilterStandardFilter", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:FilterExecute", "", 0, Array())
end sub
私の質問は、どのように私は最後の行に1
秒間マクロ内でフィルタリングすることができますか?
まずあなたが助けあなたのコードと何をしようとしている(それは完璧ではない、間違っている場合でも、または何か)ので、誰を追加する必要がありますが、何かにしていますと連携。 (2)CSVファイル内にマクロを持つことはできません(データのみを保存することができます)。 (3)できる場合は、シートのスクリーンショットも提供してください。どのデータがどの列にあるかを知ることができれば、「*今日のすべての予定をフィルタリングする*」のようなものを理解する方がはるかに簡単です。 –
私のコードを追加しました。私の投稿には、csv-fileの画像があります。 –
画像が小さすぎて読み込めません。 –