2010年3月9日 星期二

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

 
算是成功了一半,接下來是:

如何檢查行數、列數?

如何在最後一行寫入新資料?


REM ***** BASIC *****
'
' 2010/03/09 13:12
' 功能:抄檔案
' 1- 一個任意名檔案,以儲存本程式。亦可提供一些變數設定。
' 2- oMainDoc 為主檔,接收固定檔案的資料。
' 本例的檔案是 C:\Ooo\no1.ods
' 檔案的入數分頁(sheet.name)是 Main
' 3- oDataDoc 為資料檔,向主檔 oMainDoc 提供資料。
' 本例的檔案是 C:\Ooo\no2.ods
' 檔案的資料分頁是 Data '
'
' 4- oMainDoc 資料檔 open 後,向指定位置的 oDataDoc copy 資料。

'
Sub mutiSpreadsheet02

Dim oMainDoc as Object
Dim oSheet as Object
Dim oCell as Object

REM ***** 處理 oDataDoc

oDataDoc="no2"
oDataDocExtension=".ods"
oDataDocPath="C:\Ooo\"

'oDataDoc = "C:\Ooo\no2.ods" ' Windows
oDataDoc = oDataDocPath & oDataDoc & oDataDocExtension
'sFile = "/home/danny/Desktop/MyCalc.sxc" ' Linux
sURL2 = ConvertToURL(oDataDoc)

' 檢查文件是否存在,如果不存在則通知
If fileExists (oDataDoc) Then
'oDataDoc = StarDesktop.loadComponentFromURL(sURL2, "_blank", 0, Array())
oDataDoc = StarDesktop.loadComponentFromURL(sURL2, "MyFrame", 0, Array())
Else
msgbox oDataDoc & " 不存在!"
exit sub
End If
'
REM ***** 處理 oMainDoc

sFile1Name="no1"
sFile1NameExtension=".ods"
sFile1Path="C:\Ooo\"

sFile1 = sFile1Path & sFile1Name & sFile1NameExtension
sURL1 = ConvertToURL(sFile1)

' 檢查文件是否存在,如果不存在則通知
If fileExists (sFile1) Then
'oMainDoc = StarDesktop.loadComponentFromURL(sURL2, "_blank", 0, Array())
oMainDoc = StarDesktop.loadComponentFromURL(sURL1, "MyFrame", 0, Array())
Else
msgbox sFile1 & " 不存在!"
exit sub
End If
'
REM ***** 開始抄寫資料


'oDataDoc
'oMainDoc

' 指定 oMainDoc 的 sheet 名稱

oMainDocSheetName="Main"
oMainDocSheet = oMainDoc.Sheets.getByName(oMainDocSheetName)

' 指定 DataDoc 的 sheet 名稱

oDataDocName="Data"
oDataDocSheet = oDataDoc.Sheets.getByName(oDataDocName)

'count through the rows of the import sheet to, 抄至 250 欄
For RowPosition = 0 to 249

'count through the columns that need to be copied, 只抄 13 行
For ColPosition = 0 to 12

' select cell to copy
'CellCopy = SheetCopy.getCellByPosition (RowPosition, ColPosition)
' copy cell contects as string to contents variable
'Contents = Cstr(Cell)

CellCopy = oDataDocSheet.getCellByPosition (RowPosition, ColPosition)
Contents = CellCopy.String

'select the cell to paste the copied info into
CellPaste = oMainDocSheet.getCellByPosition (RowPosition+2, ColPosition+5)

'paste the contents variable into the selected cell
CellPaste.String = Contents

'move to next column
Next ColPosition

'move to next row
Next RowPosition

msgbox "Finish !"

End Sub

 
 
 

沒有留言: