2010年3月9日 星期二

(轉載) Ooo Basic 將 data 抄至另一 SpreadSheet (3)

  
記下來...

  
REM ***** BASIC *****
Sub mutiSpreadsheet
'
' 2010/03/06
' 抄檔案:oDoc2 為主檔, oDoc1 為資料檔
' oDoc2 本機主檔,位置固定。
' oDoc1 資料檔,在 sharefolder,名稱每日不同。
' oDoc1 資料檔 open 後,指定位置 copy ,返回 oDoc2 並 paste 。
'
Dim oDoc1 as Object
Dim oSheet as Object
Dim oCell as Object



' 處理 oDoc2
sFile2Name="no2"
sFile2NameExtension=".ods"
sFile2Path="C:\Ooo\"
'sFile2 = "C:\Ooo\no2.ods" ' Windows
sFile2 = sFile2Path & sFile2Name & sFile2NameExtension
'sFile = "/home/danny/Desktop/MyCalc.sxc" ' Linux
sURL2 = ConvertToURL(sFile2)
' 檢查文件是否存在,如果不存在則通知
If fileExists (sFile2) Then
'oDoc2 = StarDesktop.loadComponentFromURL(sURL2, "_blank", 0, Array())
oDoc2 = StarDesktop.loadComponentFromURL(sURL2, "MyFrame", 0, Array())
Else
msgbox sFile2 & " 不存在!"
exit sub
End If
'
' 處理 oDoc1
sFile1Name="no1"
sFile1NameExtension=".ods"
sFile1Path="C:\Ooo\"
sFile1 = sFile1Path & sFile1Name & sFile1NameExtension
sURL1 = ConvertToURL(sFile1)
' 檢查文件是否存在,如果不存在則通知
If fileExists (sFile1) Then
'oDoc1 = StarDesktop.loadComponentFromURL(sURL2, "_blank", 0, Array())
oDoc1 = StarDesktop.loadComponentFromURL(sURL1, "MyFrame", 0, Array())
Else
msgbox sFile1 & " 不存在!"
exit sub
End If
'
' 開始抄寫資料
' 1- 將焦點定在 oDoc1
oSheet = oDoc1.sheets(0)
' 2- 指定 oDoc1 的 sheet
oDoc1Sheet="sheet1"
oSheet = oDoc1.Sheets.getByName(oDoc1Sheet)
' 3- 指定位置寫入資料
' 注意,Ooo 是以 0 開始,故 (1,3) 等同 excel 的 (2,4) ,即 D2 位置
nCOL1=3
nROW1=1
oCell = oSheet.getCellByPosition (nROW1,nCOL1)
oCell.String = now 'This function returns the current date and time
oCell = oSheet.getCellByPosition (nROW1+2,nCOL1+1)
oCell.String ="快樂使用 Ooo "
mmm=oCell.value
REM ##### 將焦點放回第一個開啟的 man_test_oo1.ods
' 4- 將焦點定在 oDoc2,等同於以下的 VBA 用法
' VBA Workbooks(tFile).Worksheets("Main").Activate
' VBA Windows(ssht).Activate
oDoc2.CurrentController.Frame.ContainerWindow.toFront()
oDoc2.CurrentController.Frame.Activate()


oSheet = oDoc2.sheets (0)
oCell2 = oSheet.getCellByPosition (0,0)
oCell2.String = "我是中國人" 'This function returns the current date and time
oCell2 = oSheet.getCellByPosition (1,1)
oCell2.String = mmm



'oSourceRange=oDoc2.Sheets.getByName("Sheet1").getcellrangebyposition(3,22,3,27) '
'oTargetRange=oDoc1.Sheets.getByName("Sheet2").getcellrangebyposition(3,22,3,27)
'oTargetRange.setformulaarray(oSourceRange.getformulaarray())
'oDoc1.Sheets.getByName("Sheet2").getcellrangebyposition(3,22,3,27)=oSourceRange
'oDoc1.CopyRange(oCellCpy, oRangeOrg)
'oDoc1.CopyRange(oSourceRange, oTargetRange)




End Sub
   
  
  

沒有留言: