OpenOfficeBasic_6(getCellByPosition)作成方法
(1) 「OpenOfficeBasic_2.ods」ファイルを複製します。
(2)ファイル名を「OpenOfficeBasic_6.ods」に変更します。
(3)「OpenOfficeBasic_6.ods」ファイルをダブルクリックで起動します。
(4)OpenOffice-セキュリティ警告が表示されるので「マクロの有効化」ボタンを押します。
(5)メニューの「ツール」_「マクロ」_「マクロの管理」_「OpenOffice Basic」を選択します。
(6)OpenOffice Basic マクロダイアログで「 OpenOfficeBasic_6.ods」_「 Stndard 」_「Module1」_「Main」
を選択します。
(7)「編集」ボタンを押します。
(8)プログラムコードを以下のように変更します。
Sub Main
sh2 =ThisComponent.getSheets.getByName ("Sheet2")
sh3 =ThisComponent.getSheets.getByName ("Sheet3")
nx=7 '列数
ny=15 '行数
aFile =ThisWorkbookPath+ "\data.txt"
iNumber = Freefile
Open aFile For Output As #iNumber
Dim LineStr As String
ThisComponent.addActionLock()
Dim celldata(ny-1,nx-1) As String
For j = 0 To ny- 1
LineStr=""
For i = 0 To nx- 1
celldata(j,i)=sh2.getCellByPosition(i, j).String
LineStr= LineStr+celldata(j,i)+Chr(9)
next i
Print #iNumber,LineStr
next j
Close #iNumber
Dim celldata2(ny-1,nx-1) As String
iNumber = Freefile
Open aFile For Input As iNumber
j=0
While not eof(iNumber)
Line Input #iNumber, sLine
If sLine <>"" then
SplitStr = Split(sLine, Chr(9))
For i = 0 To nx- 1
celldata2(j,i)=SplitStr(i)
next i
j=j+1
end if
Wend
Close #iNumber
sh3.getCellRangeByPosition(0, 0,nx-1, ny - 1).setDataArray(celldata2)
ThisComponent.removeActionLock()
End Sub
' このブックの存在するフォルダをフルパスで返す。
' Excel VBAでの ThisWorkbook.Pathに相当
Function ThisWorkbookPath
windows_filepath = ConvertFromUrl(ThisComponent.URL )
vntURL = Split(windows_filepath, "\")
i = UBound(vntURL)
ReDim Preserve vntURL(i - 1)
windows_dir_path = Join(vntURL, "\")
ThisWorkbookPath = windows_dir_path
End Function
(9)「BASIC プログラムの実行」ボタンを押します。
(10)ワークブックの同一フォルダー内に「data.txt」が作成されます。
(11)data.txt内に以下の文字列が書き込まれています。
近接露光入力条件表
No 記号 値 単位 説明
1 WL 0.4047 μm 波長
2 b 50 μm マスク面とスクリーン面のギャップ量
3 INA 0.05 rad 照明の広がり角度(照明NA)
4 X1 -20 μm 光強度計算領域のX方向min値
5 X2 20 μm 光強度計算領域のX方向max値
6 Nx 40 整数 光強度計算領域のX方向分割数(最大140まで)
7 Y1 -20 μm 光強度計算領域のY方向min値
8 Y2 20 μm 光強度計算領域のY方向max値
9 Ny 40 整数 光強度計算領域のY方向分割数(最大140まで)
10 Np 1 整数 矩形パターン数を設定(整数最大1000まで)
11 MU 0.1 無次元 3次元グラフの表示単位
No U0r[i] U0i[i] ξ1[i] ξ2[i] η1[i] η2[i]
0 1 0 -4 4 -15 15
(12) data.txtから読み込まれたデータは「Sheet3」にコピーされます。