下のコードでシートを移動しようとしたのですが、エラーが出ないのにも関わらず、上手くできません。
OPTION VBASupport 1
Sub Main
Worksheets("Sheet2").Move (After :=Workbooks("無題 2.ods").Worksheets("Sheet1"))
End Sub
引数を設定せず、新規シートに移動はできました。
MoveをCopyにした時に、コピーはできました。
何故でしょうか?
下のコードでシートを移動しようとしたのですが、エラーが出ないのにも関わらず、上手くできません。
OPTION VBASupport 1
Sub Main
Worksheets("Sheet2").Move (After :=Workbooks("無題 2.ods").Worksheets("Sheet1"))
End Sub
引数を設定せず、新規シートに移動はできました。
MoveをCopyにした時に、コピーはできました。
何故でしょうか?
Excel側の挙動を確認してないけど、Excel側ではその移動が起き、LibreOffice側で起きないならLibreOffice側のバグ。
https://opengrok.libreoffice.org/xref/core/sc/source/ui/vba/vbaworksheet.cxx?r=bc3bddc6#534
ここのgetModel()が返すのは、そのSpreadsheet(Sheet1とかSheet2とか)が属するSpreadsheetDocument (book1.xlsとか)
だから例えば、yyy.odsにAAAシート、BBBシート、Sheet1シートがこの順に並んでいて、xxx.odsにAAAシートがあって、yyy.ods側に格納されるマクロがあるとする。わかりやすさのためにyyy.odsのAAAシートのA1に1、xxx.odsのAAAシートのA1に2を入力した状態で以下のコードを実行したとする。
Worksheets("Sheet1").Move (After :=Workbooks("xxxx.ods").Worksheets("AAA"))
結果、yyy.ods側の並び順がAAAシート、Sheet1シート、BBBシートになる。このとき、yyy.odsのAAAシートには元々と同じく1が入っている、かな?
Excel 側では、引数を綴じている()を外せば正常に動作しました。
LibreOffice側で同様にしても、動作はしませんでした。(エラーも出ません)。
バグということで、一旦収めます。
ありがとうございます。