新しく発言する EXIT インデックスへ
OLE連携Excel版サンプル

  OLE連携 Excel版サンプル 山中和義 2006/11/20 20:43:23 
  続き 山中和義 2006/11/20 20:44:31 
  例題1 山中和義 2006/11/21 14:29:02 
  バージョンアップ 山中和義 2006/11/24 18:06:42 
  │└続き 山中和義 2006/11/24 18:07:34 
  随時バージョンアップ 山中和義 2006/11/28 10:53:01 
  ソース公開アドレスを変更しました。 山中和義 2006/12/19 15:24:06 

  OLE連携 Excel版サンプル 山中和義 2006/11/20 20:43:23  ツリーへ

OLE連携 Excel版サンプル 返事を書く
山中和義 2006/11/20 20:43:23
WinME、Excel2000で動作確認しています。



!OLEでExcelを使う

CALL ExcelApplication.Visible(-1) !起動して表示する


!ワークブック関連
CALL WorkBooks.New(ExcelApplication.WorkBooks)

!!CALL WorkBooks.OPEN("C:\My Documents\112233.XLS") !ブックを開く
CALL WorkBooks.Add !新規に作成する


!ワークシート関連
CALL WorkSheets.New(ExcelApplication.WorkSheets)
CALL WorkSheets.Add !新規に作成する

!!CALL Sheet.New(WorkSheets.Item("sheet1"))

FOR i=1 TO VAL(WorkSheets.Count$) !シートの数を得る
CALL Sheet.New(WorkSheets.ItemNo(i)) !シートを指定する
PRINT Sheet.GetName$ !シート名を得る
NEXT i
!CALL Sheet.SetName("abc") !シート名を設定する
!CALL Sheet.Select !アクティブにする


!セル関連
CALL Cell.New(Sheet.CellsA1(5,"B")) !セルを指定する
!CALL Cell.New(Sheet.CellsR1C1(5,2))
!CALL Cell.New(Sheet.Range("B5:D10"))

!!PRINT Cell.GetValue$ !セルの値を得る

CALL Cell.SetValue("123") !セルに値を設定する
!CALL Cell.SetValue("=1+2+3") !セルに式を設定する


!※変更があれば保存のダイヤログを表示する

CALL ExcelApplication.Quit !Excelの終了

END !※タスクマネージャで終了させる場合もある

  続き 山中和義 2006/11/20 20:44:31  ツリーへ

Re: OLE連携 Excel版サンプル 返事を書く
山中和義 2006/11/20 20:44:31
続き


MODULE ExcelApplication !OLE連携オブジェクト
OLE CREATEOBJECT "Excel.Application"

!メソッド、メンバ変数、プロパティ
EXTERNAL SUB Quit !Excelの終了
OLE METHOD "Quit"
END SUB
EXTERNAL SUB Visible(n) !表示・非表示
OLE PropertyPut "Visible"
END SUB
EXTERNAL FUNCTION WorkBooks !ワークブックへのハンドルを得る
OLE PropertyGet "WorkBooks"
END FUNCTION
EXTERNAL FUNCTION WorkSheets !ワークシートへのハンドルを得る
OLE PropertyGet "WorkSheets"
END FUNCTION
END MODULE


MODULE WorkBooks !WorkBooksクラス
EXTERNAL SUB New(n)
OLE ASSIGN n !Excel.Application.WorkBooks
END SUB

EXTERNAL SUB Add !新規作成
OLE METHOD "Add"
END SUB
EXTERNAL SUB OPEN(f$) !既存ワークブックを開く
OLE METHOD "Open"
END SUB
EXTERNAL SUB CLOSE !閉じる
OLE METHOD "Close"
END SUB
END MODULE


MODULE WorkSheets !WorkSheetsクラス
EXTERNAL SUB New(n)
OLE ASSIGN n !Excel.Application.WorkBooks.WorkSheets
END SUB

EXTERNAL SUB Add !新規作成
OLE METHOD "Add"
END SUB
EXTERNAL FUNCTION Item(s$) !名称を指定してハンドルを得る
OLE PropertyGet "Item"
END FUNCTION
!オーバーロード - メソッド名が同一で引数の型、数、並び順が異なるメソッド
EXTERNAL FUNCTION ItemNo(n) !番号を指定してハンドルを得る
OLE PropertyGet "Item"
END FUNCTION

EXTERNAL FUNCTION Count$ !ワークシートの数を得る
OLE PropertyGet "Count"
END FUNCTION
END MODULE


MODULE Sheet !シート
EXTERNAL SUB New(n) !例 Excel.Application.WorkBooks.WorkSheets.Item("Sheet1")
OLE ASSIGN n
END SUB

EXTERNAL FUNCTION CellsR1C1(Row,Col) !例 Cells(5,2)
OLE PropertyGet "Cells"
END FUNCTION
EXTERNAL FUNCTION CellsA1(Row,Col$) !例 Cells(5,"B")
OLE PropertyGet "Cells"
END FUNCTION
EXTERNAL FUNCTION RANGE(r$) !例 Range("B5:D10")
OLE PropertyGet "Range"
END FUNCTION

EXTERNAL FUNCTION GetName$ !名称を得る
OLE PropertyGet "Name"
END FUNCTION
EXTERNAL SUB SetName(s$) !名称を設定する
OLE PropertyPut "Name"
END SUB
EXTERNAL SUB SELECT !アクティブにする
OLE METHOD "Select"
END SUB
END MODULE


MODULE Cell !セル
EXTERNAL SUB New(n) !例 Excel.Application.WorkBooks.WorkSheets.Item("Sheet1").Cells(5,"B")
OLE ASSIGN n
END SUB

EXTERNAL FUNCTION GetValue$ !値を得る
OLE PropertyGet "Value"
END FUNCTION
EXTERNAL SUB SetValue(v$) !値を設定する
OLE PropertyPut "Value"
END SUB
END MODULE

  例題1 山中和義 2006/11/21 14:29:02  ツリーへ

Re: OLE連携 Excel版サンプル 返事を書く
山中和義 2006/11/21 14:29:02
例題1

!「成績表.XLS」を作る

!シート名「期末試験」
!   B   C  D  E  F
! 3 なまえ 国語 数学 英語 合計
! 4 A   39  58  86  =SUM(C4:E4)
! 5 B   88  98  75  =SUM(C5:E5)
!

CALL ExcelApplication.Visible(-1) !起動して表示する

!ワークブック関連
CALL WorkBooks.New(ExcelApplication.WorkBooks)
CALL WorkBooks.Add !新規に作成する

!ワークシート関連
CALL WorkSheets.New(ExcelApplication.WorkSheets)

CALL Sheet.New(WorkSheets.Item("Sheet1"))
CALL Sheet.SetName("期末試験") !シート名を設定する

!セル関連
DATA なまえ,国語,数学,英語,合計
DATA A,39,58,86,0
DATA B,88,98,75,0
FOR i=1 TO 3 !データを入力する
FOR j=1 TO 5
CALL Cell.New(Sheet.CellsR1C1(i+2,j+1)) !セルを指定する
READ d$
CALL Cell.SetValue(d$) !値を設定する
NEXT j
NEXT i

CALL Cell.New(Sheet.CellsA1(4,"F")) !合計を計算する
CALL Cell.SetValue("=SUM(C4:E4)")
CALL Cell.New(Sheet.CellsA1(5,"F"))
CALL Cell.SetValue("=SUM(C5:E5)")


!※保存の画面でワークブック名を「成績表」として保存する

CALL ExcelApplication.Quit !Excelの終了

END !※タスクマネージャで終了させる場合もある



以下のMODULE部分は同じため、省略します。

  バージョンアップ 山中和義 2006/11/24 18:06:42  ツリーへ

Re: OLE連携 Excel版サンプル 返事を書く
山中和義 2006/11/24 18:06:42
バージョンアップ


!「成績表.XLS」を作る

!シート名「期末試験」
!   B   C  D  E  F
! 3 なまえ 国語 数学 英語 合計
! 4 A   39  58  86  =SUM(C4:E4)
! 5 B   88  98  75  =SUM(C5:E5)
!

CALL ExcelApplication.Visible(-1) !起動して表示する

!ブック関連
CALL WorkBooks.New(ExcelApplication.WorkBooks)
CALL WorkBooks.Add !新規に作成する

!シート関連
CALL WorkSheets.New(ExcelApplication.WorkSheets)

CALL Sheet.New(WorkSheets.Item("Sheet1"))
CALL Sheet.SetName("期末試験") !シート名を設定する

!セル関連
DATA なまえ,国語,数学,英語,合計
DATA A,39,58,86,"=SUM(C4:E4)"
DATA B,88,98,75,"=SUM(C5:E5)"
FOR i=1 TO 3 !データを入力する
FOR j=1 TO 5
CALL Cell.New(Sheet.CellsR1C1(i+2,j+1)) !セルを指定する
READ d$
CALL Cell.SetValue(d$) !値を設定する
NEXT j
NEXT i

CALL Book.New(WorkBooks.Item("Book1")) !ワークブックを保存する
!!CALL Book.Save
CALL Book.SaveAs("成績表")

!CALL WorkBooks.Close !ワークブックを閉じる
CALL ExcelApplication.Quit !Excelの終了

END !※タスクマネージャで終了させる場合もある



MODULE ExcelApplication !OLE連携オブジェクト
OLE CREATEOBJECT "Excel.Application" !ProgID

!メソッド、メンバ変数、プロパティ
EXTERNAL SUB Quit !Excelの終了
OLE METHOD "Quit"
END SUB
EXTERNAL SUB Visible(n) !表示・非表示
OLE PropertyPut "Visible"
END SUB
EXTERNAL FUNCTION WorkBooks !ワークブックへのハンドルを得る
OLE PropertyGet "WorkBooks"
END FUNCTION
EXTERNAL FUNCTION WorkSheets !ワークシートへのハンドルを得る
OLE PropertyGet "WorkSheets"
END FUNCTION
END MODULE


MODULE WorkBooks !WorkBooksクラス
EXTERNAL SUB New(n) !コンストラクタ
OLE ASSIGN n !Excel.Application.WorkBooks
END SUB

EXTERNAL SUB Add !新規作成
OLE METHOD "Add"
END SUB
EXTERNAL SUB OPEN(f$) !既存ワークブックを開く
OLE METHOD "Open"
END SUB
EXTERNAL SUB CLOSE !すべて閉じる
OLE METHOD "Close"
END SUB
EXTERNAL FUNCTION Item(s$) !名称を指定してハンドルを得る
OLE PropertyGet "Item"
END FUNCTION
!オーバーロード - メソッド名が同一で引数の型、数、並び順が異なるメソッド
EXTERNAL FUNCTION ItemNo(n) !番号を指定してハンドルを得る
OLE PropertyGet "Item"
END FUNCTION
EXTERNAL FUNCTION Count !ワークシートの数を得る
OLE PropertyGet "Count"
END FUNCTION
END MODULE

  │└続き 山中和義 2006/11/24 18:07:34  ツリーへ

Re: バージョンアップ 返事を書く
山中和義 2006/11/24 18:07:34
続き


MODULE WorkSheets !WorkSheetsクラス
EXTERNAL SUB New(n) !コンストラクタ
OLE ASSIGN n !Excel.Application.WorkBooks.WorkSheets
END SUB

EXTERNAL SUB Add !新規作成
OLE METHOD "Add"
END SUB
EXTERNAL FUNCTION Item(s$) !名称を指定してハンドルを得る
OLE PropertyGet "Item"
END FUNCTION
!オーバーロード - メソッド名が同一で引数の型、数、並び順が異なるメソッド
EXTERNAL FUNCTION ItemNo(n) !番号を指定してハンドルを得る
OLE PropertyGet "Item"
END FUNCTION

EXTERNAL FUNCTION Count !ワークシートの数を得る
OLE PropertyGet "Count"
END FUNCTION
END MODULE


MODULE Book !ブック
EXTERNAL SUB New(n) !コンストラクタ
OLE ASSIGN n !例 Excel.Application.WorkBooks.Item("Book1")
END SUB

EXTERNAL SUB Save !上書き保存
OLE METHOD "Save"
END SUB
EXTERNAL SUB SaveAs(f$) !名称をつけて保存する
OLE METHOD "SaveAs"
END SUB
EXTERNAL SUB CLOSE !閉じる
OLE METHOD "Close"
END SUB
END MODULE


MODULE Sheet !シート
EXTERNAL SUB New(n) !コンストラクタ
OLE ASSIGN n !例 Excel.Application.WorkBooks.WorkSheets.Item("Sheet1")
END SUB

EXTERNAL FUNCTION CellsR1C1(Row,Col) !例 Cells(5,2)
OLE PropertyGet "Cells"
END FUNCTION
EXTERNAL FUNCTION CELLS(Row,Col$) !例 Cells(5,"B")
OLE PropertyGet "Cells"
END FUNCTION
EXTERNAL FUNCTION RANGE(r$) !例 Range("B5:D10")
OLE PropertyGet "Range"
END FUNCTION

EXTERNAL FUNCTION GetName$ !名称を得る
OLE PropertyGet "Name"
END FUNCTION
EXTERNAL SUB SetName(s$) !名称を設定する
OLE PropertyPut "Name"
END SUB
EXTERNAL SUB SELECT !アクティブにする
OLE METHOD "Select"
END SUB
END MODULE


MODULE Cell !セル
EXTERNAL SUB New(n) !コンストラクタ
OLE ASSIGN n !例 Excel.Application.WorkBooks.WorkSheets.Item("Sheet1").Cells(5,"B")
END SUB

EXTERNAL FUNCTION GetValue$ !値を得る
OLE PropertyGet "Value"
END FUNCTION
EXTERNAL SUB SetValue(v$) !値を設定する
OLE PropertyPut "Value"
END SUB
EXTERNAL FUNCTION Formula$ !A1形式の式を得る
OLE PropertyGet "Formula"
END FUNCTION
EXTERNAL FUNCTION FormulaR1C1$ !R1C1形式の式を得る
OLE PropertyGet "FormulaR1C1"
END FUNCTION
END MODULE

  随時バージョンアップ 山中和義 2006/11/28 10:53:01  ツリーへ

Re: OLE連携 Excel版サンプル 返事を書く
山中和義 2006/11/28 10:53:01
随時バージョンアップ
プログラムが長くなったので、こちらを見てください。

・基本的な表の作成(含.罫線、書体)、参照ができます。
 http://www.urban.ne.jp/home/kz4ymnk/seminar/basic/ole_excel.txt

  ソース公開アドレスを変更しました。 山中和義 2006/12/19 15:24:06  ツリーへ

Re: OLE連携 Excel版サンプル 返事を書く
山中和義 2006/12/19 15:24:06
ソース公開アドレスを変更しました。
http://www.urban.ne.jp/home/kz4ymnk/seminar/basic/ole_excel.html


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。