新規シートを作ると無題 1.odsとかになるのだが、Titleを取得すると、通常シートは.odsが付いたままなのだが、新規シートのTitleには.odsは付かない。
 さらにここで使ったプロパティでは無題と1の間にある半角空白を取り除かないと動かない。

#coding: utf-8
# python Marco
# 新規シートを作成しておいて、sampleフォルダの複数のodsドキュメントファイルを呼び出して
# そのドキュメントファイルにtestという名前のシートがあれば、
# 新規シートにコピーする。

import unohelper
import glob
from com.sun.star.beans import PropertyValue

def diffdoc_mudaidoc_shcopy():
desktop = XSCRIPTCONTEXT.getDesktop()
# 新規ドキュメントを開く。
mudaiDoc = desktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, ())
# sampleフォルダのodsファイルの名前をlistにする。
odslist = glob.glob('C:/sample/*.ods') # ワイルドカードが使用可能

ctx = XSCRIPTCONTEXT.getComponentContext()

for ods in odslist:
oURL = unohelper.systemPathToFileUrl(ods)
fromDoc = desktop.loadComponentFromURL( oURL,"_blank", 0, () )
# コピーするシート名
newSheetName = "test"
# ドキュメントに指定したシート名のシートがあるか。
if fromDoc.Sheets.hasByName(newSheetName):
# あればそのシートをアクティブにする。
fromDoc.CurrentController.setActiveSheet(fromDoc.Sheets.getByName(newSheetName))
# diffd_mudaid_shcpyメソッドをコピー、貼り付けすればその回数分、複数シートコピーされる。
diffd_mudaid_shcpy(mudaiDoc, newSheetName,desktop, ctx )

fromDoc.dispose()
#mudaiDoc.dispose()

def diffd_mudaid_shcpy(mudaiDoc, newSheetName, desktop, ctx ):

frame = desktop.getCurrentFrame()
# 新規ドキュメントを開いてシートをコピー
dispatchHelper = ctx.ServiceManager.createInstanceWithContext( 'com.sun.star.frame.DispatchHelper', ctx )
p0 = PropertyValue()
p0.Name = "DocName" # <= 開いてるドキュメントが一つの時は関係ない。
# 無題 1.odsのTitleは最初から.ods無し、漢字と数字の間に半角スペース有り。
p0.Value = mudaiDoc.Title.replace(" ", "" )
# p0.Value = "DocName"に対応するp0.Valueのドキュメントの名前は複数ドキュメントを開いている時に特定する為に必要。
# ※.odsはいらない。
p1 = PropertyValue()
p1.Name = 'Index'
p1.Value = 32767 # <= 一番後ろに移動させる場合
p2 = PropertyValue()
p2.Name = 'Copy'
p2.Value = True # <= 移動の場合はFalse,copyの場合はTrue
properties = (p0,p1,p2)
dispatchHelper.executeDispatch(frame, ".uno:Move", "", 0, properties)

g_exportedScripts = diffdoc_mudaidoc_shcopy,

if __name__ == '__main__':
import unopy
XSCRIPTCONTEXT = unopy.connect()
if not XSCRIPTCONTEXT:
print("Failed to connect.")
import sys
sys.exit(0)
diffdoc_mudaidoc_shcopy()