ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

MS WordやExcelをただでPDFにするためのOpenOffice

2007-03-21 18:15:40 | OpenOffice

 Wordの文書をPDFにしようと思って。。
 やっぱ、いきなりPDFとか買ってこないとだめかなあ。。と思っていたときに、ふと、OpenOfficeでできなかったっけ?と思って、いまやったらできたんで、メモメモ。




■Word文書のPDF化

 Word文書の場合、OpenOfficeのWriterをひらき、

 メニューの「ファイル」→「開く」を選択し、
 「ファイルを開く」ダイアログが出てきたら、
    ファイルの種類を「すべてのファイル」にして(なってればそれでいい)
 変換したいWordファイルを探して、開く。

 すると、Wordファイルが読み込まれるので

 そしたら、
 メニューの「ファイル」→「PDFとしてエクスポート」を選択し、
 ファイル名を入れて(下の拡張子つけるにチェックしてあれば、
 拡張子.pdfは書かなくていい)保存。

 PDFのオプションで、「画像の解像度を下げる」で、画像の解像度を下げて、
 ファイルを小さくすることもできる。




■Excel文書のPDF化

 Excel文書の場合、OpenOfficeのCalcをひらき、

 メニューの「ファイル」→「開く」を選択し、
 「ファイルを開く」ダイアログが出てきたら、
    ファイルの種類を「すべてのファイル」にして(なってればそれでいい)
 変換したいExcelファイルを探して、開く。

 すると、Excelファイルが読み込まれるので

 そしたら、
 メニューの「ファイル」→「PDFとしてエクスポート」を選択し、
 ファイル名を入れて(下の拡張子つけるにチェックしてあれば、
 拡張子.pdfは書かなくていい)保存。

 PDFのオプションで、「画像の解像度を下げる」で、画像の解像度を下げて、
 ファイルを小さくすることもできる。

 「すべて」の場合は、全シート(ただし、入力されているシートのみ)1つのPDFにして保存してくれるみたい。幅が狭くて見えない部分がある場合、そのとおり(見えないまま)、保存する。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JavaからmySQLのデータ取得、OpenOffice Calcで印刷してExcel形式で保存

2007-02-09 16:32:45 | OpenOffice

 昨日のOpenOfficeの話の続き。
 昨日同様、日本語についてまで考えると、まだまだやんないといけないことありそうだけど、
 とりあえず、今の段階で、書いておきます。

 昨日は、OpenOfficeに書くところまでやったけど、そのあと、プリンタから出力して、Excel形式で保存して、クローズします。



■事前準備
 昨日と、同じです。
(1)まず、mySQLをインストールして、userテーブルを作成し、データを入れます。
(2)JDBCドライバをとってきて、それを、Eclipseで、プロジェクトのパスに通します。
(3)OpenOfficeのjarをEclipseのパスに通します
(4)mySQLを起動します
(5)OpenOfficeを起動します

詳しい方法に関しては、昨日の「事前準備」を参照




■ソース
Sample01.java,OpenOffice.java,Calc.javaの一部を修正します。

●Sample01.java
プログラムは以下のとおり
/**
 * サンプルプログラム
 * 参考にしたサイト
 * http://www.okapiproject.com/java/java_tools/openoffice/
 *                          developer/openoffice_program1.htm
 * (本当は1行です。長いので、きりました)
 * 
 */
import com.sun.star.lang.*;
import com.sun.star.bridge.*;
import com.sun.star.uno.*;
import com.sun.star.frame.*;

import com.sun.star.sheet.*;
import com.sun.star.container.XIndexAccess;
import com.sun.star.table.*;
import com.sun.star.beans.PropertyValue;

import java.sql.*;
import java.util.*;

/**
 * OpenOffice.org の表計算(Calc)に「Hello World」と出力する。
 */
public class Sample01 {

    /**
     * 起動パラメータなし。
     * @param args String
     */
    public static void main(final String[] args)
    {
      	OpenOffice of = null;
        Calc	cl = null;

		//======================================//
		//	OpenOfficeと接続		//
		//======================================//
        XMultiServiceFactory xMSF = null;
        try
        {
        	of = new OpenOffice();
        	xMSF	=	of.connect();

        }
        catch (java.lang.Exception e)
        {
            e.printStackTrace();
            System.out.println("OpenOfficeの起動に失敗");
        }

		//======================================//
		//Calc を起動				//
		//======================================//
        XSpreadsheetDocument myDoc = null;
        try
        {
	        cl = new Calc(xMSF);
   	    	myDoc	=	cl.open("private:factory/scalc","_blank");
        }
        catch (java.lang.Exception e)
        {
            e.printStackTrace();
            System.out.println("表計算の起動に失敗");
        }


		//======================================//
		//シートを取得				//
		//======================================//
        XSpreadsheet oSheet = null;
        try
        {
			oSheet = cl.getSheetByPosition(myDoc,0);
        }
        catch (java.lang.Exception e)
        {
            e.printStackTrace();
            System.out.println("シートの取得に失敗");
        }

		//======================================//
		//DB接続				//
		//======================================//
	Vector allData = new Vector();	// データをここに入れておく
   	try 
   	{
			// ドライバクラスをロード
      		Class.forName("org.gjt.mm.mysql.Driver");

      		// データベースへ接続
      		String url =
		 "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=sjis";
      		Connection con =
		 DriverManager.getConnection(url,"root","rootのパスワード");

		    // ステートメントオブジェクトを生成
      		Statement stmt = con.createStatement();
      		String sql = "SELECT * FROM user";

      		// クエリーを実行して結果セットを取得
		    ResultSet rs = stmt.executeQuery(sql);
      		ResultSetMetaData meta = rs.getMetaData();
      
      		// 検索された行数分ループ
      		while(rs.next())
      		{
			HashMap mp = new HashMap();
      			for(int i = 1 ; i <= meta.getColumnCount(); i ++ )
      			{
      				mp.put(meta.getColumnName(i),
                                        rs.getString(meta.getColumnName(i)) );
      			}
			allData.add(mp);		
      		}

		    // データベースから切断
      		stmt.close();
      		con.close();
	}
	catch (java.lang.Exception e)
	{
      		e.printStackTrace();
    	}
      
		//======================================//
		//	セルに書き出し		    //
		//======================================//
        XCell oCell = null;
        try
        {
	     	for(int i = 0 ; i < allData.size() ; i ++ )
      		{
      			HashMap mp = (HashMap)allData.elementAt(i);
      			String[] key = (String[]) mp.keySet().toArray(new String[0]);
      			for(int j = 0 ; j < key.length ; j ++ )
      			{
		        	oCell = cl.getCell(oSheet,i,j);
            		oCell.setFormula(key[j] + "=" + (String)mp.get(key[j]));
      			}
      		}
        }
        catch (java.lang.Exception e)
        {
            e.printStackTrace();
            System.out.println("セル書き出しで失敗");
        }

		//======================================//
		//	印刷・保存		   //
		//======================================//
	try
	{
		//	印刷
		of.printout(cl.getComponent(myDoc),1);

		//	Excel形式で保存
		cl.saveAsExcel(myDoc,"c:¥¥temp¥¥test.xls");

		//	クローズ
		of.close(cl.getComponent(myDoc));
	}
	catch(java.lang.Exception e)
	{
            e.printStackTrace();
            System.out.println("プリントアウト失敗");
	}

        //処理終了
        System.exit(0);
    }
}

(上記<> ¥は、本当は半角。赤字部分が昨日と違うところ)
DB名、ホスト名、ユーザー名、パスワードに関しては、昨日の内容を参照



●OpenOffice.java
昨日のものに追加されるのは以下のとおり
    /**
     * プリントアウト
     * 参考にしたサイト
     * http://weblogs.java.net/blog/tchangu/archive/2005/12/open_office_jav_1.html
     * @param  oDoc XComponen
     * @param  busu int
     * @throws Exception Exception
     */
	public	void	printout(XComponent oDoc,int busu)
           throws java.lang.Exception
	{
		XPrintable xPrintable =
                   (XPrintable)UnoRuntime.queryInterface(XPrintable.class,oDoc);

		PropertyValue[] printOpts = new PropertyValue[1];
		printOpts[0] = new PropertyValue();
		printOpts[0].Name = "Pages";
		printOpts[0].Value = Integer.toString(busu);
		xPrintable.print(printOpts);
	}

    /**
     * クローズ
     * @param  oDoc XComponen
     * @throws Exception Exception
     */
	public	void	close(XComponent oDoc)
           throws java.lang.Exception
	{
		XCloseable xClose =
                   (XCloseable)UnoRuntime.queryInterface(XCloseable.class, oDoc);
		int kai = 0;
		for ( kai = 0 ; kai < 100 ; kai++)
		{
			try
			{
				xClose.close(true);
				break;
			}
			catch(CloseVetoException e)
			{
				Thread.sleep(2000);
			}
		}
		
		if ( kai	>=	100 )
		{
            System.out.println("クローズできず。手動でクローズ");
		}
	}

(上記<> ¥は、本当は半角)

なお、クローズは失敗すると、2秒寝かせて(2000のところ。ここの数字を変えると、寝ている時間が変わる)処理を繰り返す。それを100階やっても失敗したら、エラー表示「何らかの原因でクローズできません。手動でクローズしてください」して抜ける。



●Calc.java
昨日のものに追加されるのは以下のとおり
    /**
     * Excel形式で保存
     * 参考にしたサイト
     * http://weblogs.java.net/blog/tchangu/archive/2005/12/open_office_jav_1.html
     * @param  oDoc XSpreadsheetDocument
     * @param  busu int
     * @throws Exception Exception
     */
	public	void	saveAsExcel(XSpreadsheetDocument oDoc,String path)
			 throws java.lang.Exception
	{
		XStorable xstorable =
                (XStorable) UnoRuntime.queryInterface(XStorable.class, oDoc);
		PropertyValue[] storeProps = new PropertyValue[1];
		storeProps[0] = new PropertyValue();
		storeProps[0].Name = "FilterName";
		storeProps[0].Value = "MS Excel 97";

		File oFile = new File(path);
		xstorable.storeAsURL(oFile.toURL().toString(),storeProps);
	}

    /**
     * 単純に保存
     * @param  oDoc XSpreadsheetDocument
     * @param  busu int
     * @throws Exception Exception
     */
	public	void	saveAs(XSpreadsheetDocument oDoc,String path)
			 throws java.lang.Exception
	{
		XStorable xstorable =
                (XStorable) UnoRuntime.queryInterface(XStorable.class, oDoc);
		PropertyValue[] storeProps = new PropertyValue[0];
		File oFile = new File(path);
		xstorable.storeAsURL(oFile.toURL().toString(),storeProps);
		
	}

    /**
     * コンポーネントの取得
     * @param  oDoc XSpreadsheetDocument
     * @return XComponent
     * @throws Exception Exception
     */
	public	XComponent	getComponent(XSpreadsheetDocument myDoc)
			 throws java.lang.Exception
	{
	   return (XComponent)UnoRuntime.queryInterface(XComponent.class,myDoc);
	}

(上記<> ¥は、本当は半角)

なお、saveAsExcelのかわりにsaveAsにすると、OpenOffice形式で保存する。
プロパティの"FilterName"の値を変えると保存内容が変わるが、どのような"FilterName"があるかについては、
OpenOffice.orgとJooReportsを利用してJavaからPDFを出力する
http://codezine.jp/a/article.aspx?aid=131

OpenOffice.orgがサポートするフォーマット変換(かなり下のほう)を参照。

とりあえず、今回はここまで。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JavaアプリでmySQLのデータを取ってきてOpenOffice Calc(表計算)に書く

2007-02-08 15:54:42 | OpenOffice

 日本語についてまで考えると、まだまだやんないといけないことありそうだけど、
 とりあえず、今の段階で、書いておきます。

 mySQLから、JDBC経由でデータをとってきて、それをOpenOffice Calcに書き出す、Javaプログラムです。



■仕様

 現在、mySQLのDB名testの中に、userテーブルがあり、以下のように
 データが入っている。

このとき、1桁1レコードで、
  項目名=値
の形で、以下のように、OpenOfficeCalcに書き出す

Javaアプリプログラムを作成する




■事前準備

(1)まず、mySQLをインストールして、userテーブルを作成し、データを入れます。

 といって、どーやるの(>_<!)という場合は、

JavaでHello World > JDBC(MySQL)編
http://www.hellohiro.com/jdbcmysql.htm


 を参考にしてくださいませ

(2)JDBCドライバをとってきて、それを、Eclipseで、プロジェクトのパスに通します。
 JDBCドライバも上記の「JavaでHello World > JDBC(MySQL)編」に書いてあるので、それをとってきて、クラスパスをとおしてね(^^)

(3)OpenOfficeのjarをEclipseのパスに通します
 ここの1に書いてあるOpenOfficeのjarをクラスパスにとおしてね。

(4)mySQLを起動します
 mysqld --default-character-set=sjis
 で起動します。

(5)OpenOfficeを起動します
 "C:¥Program Files¥OpenOffice.org 2.1¥program¥soffice.exe" "-accept=socket,port=8100;urp;"
(¥は、本当は半角)みたいなかんじ




■ソース

 前に書いたSample01.java,OpenOffice.java,Calc.javaの一部を修正します。

●Sample01.java
プログラムは以下のとおり
/**
 * サンプルプログラム
 * 参考にしたサイト
 * http://www.okapiproject.com/java/java_tools/openoffice/
 *                          developer/openoffice_program1.htm
 * (本当は1行です。長いので、きりました)
 * 
 */
import com.sun.star.lang.*;
import com.sun.star.bridge.*;
import com.sun.star.uno.*;
import com.sun.star.frame.*;

import com.sun.star.sheet.*;
import com.sun.star.container.XIndexAccess;
import com.sun.star.table.*;
import com.sun.star.beans.PropertyValue;

import java.sql.*;
import java.util.*;

/**
 * OpenOffice.org の表計算(Calc)に「Hello World」と出力する。
 */
public class Sample01 {

    /**
     * 起動パラメータなし。
     * @param args String
     */
    public static void main(final String[] args)
    {
      	OpenOffice of = null;
        Calc	cl = null;

		//======================================//
		//	OpenOfficeと接続		//
		//======================================//
        XMultiServiceFactory xMSF = null;
        try
        {
        	of = new OpenOffice();
        	xMSF	=	of.connect();

        }
        catch (java.lang.Exception e)
        {
            e.printStackTrace();
            System.out.println("OpenOfficeの起動に失敗");
        }

		//======================================//
		//Calc を起動				//
		//======================================//
        XSpreadsheetDocument myDoc = null;
        try
        {
	        cl = new Calc(xMSF);
   	    	myDoc	=	cl.open("private:factory/scalc","_blank");
        }
        catch (java.lang.Exception e)
        {
            e.printStackTrace();
            System.out.println("表計算の起動に失敗");
        }


		//======================================//
		//シートを取得				//
		//======================================//
        XSpreadsheet oSheet = null;
        try
        {
			oSheet = cl.getSheetByPosition(myDoc,0);
        }
        catch (java.lang.Exception e)
        {
            e.printStackTrace();
            System.out.println("シートの取得に失敗");
        }

		//======================================//
		//DB接続				//
		//======================================//
	    Vector allData = new Vector();	//データをここに入れておく
   		try 
   		{
			// ドライバクラスをロード
      		Class.forName("org.gjt.mm.mysql.Driver");

      		// データベースへ接続
      		String url =
		 "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=sjis";
      		Connection con =
		 DriverManager.getConnection(url,"root","rootのパスワード");

		    // ステートメントオブジェクトを生成
      		Statement stmt = con.createStatement();
      		String sql = "SELECT * FROM user";

      		// クエリーを実行して結果セットを取得
		    ResultSet rs = stmt.executeQuery(sql);
      		ResultSetMetaData meta = rs.getMetaData();
      
      		// 検索された行数分ループ
      		while(rs.next())
      		{
   				HashMap mp = new HashMap();
      			for(int i = 1 ; i <= meta.getColumnCount(); i ++ )
      			{
      				mp.put(meta.getColumnName(i),
					rs.getString(meta.getColumnName(i)) );
      			}
   				allData.add(mp);		
      		}

		    // データベースから切断
      		stmt.close();
      		con.close();
		}
		catch (java.lang.Exception e)
		{
      		e.printStackTrace();
    	}
      
		//======================================//
		//	セルに書き出し			//
		//======================================//
        XCell oCell = null;
        try
        {
	     	for(int i = 0 ; i < allData.size() ; i ++ )
      		{
      			HashMap mp = (HashMap)allData.elementAt(i);
      			String[] key = (String[]) mp.keySet().toArray(new String[0]);
      			for(int j = 0 ; j < key.length ; j ++ )
      			{
		        	     oCell = cl.getCell(oSheet,i,j);
            		     oCell.setFormula(key[j] + "=" + (String)mp.get(key[j]));
      			}
      		}
        }
        catch (java.lang.Exception e)
        {
            e.printStackTrace();
            System.out.println("セル書き出しで失敗");
        }

        //処理終了
        System.exit(0);
    }
}

(上記< > ¥は、本当は半角)

 前に書いたSample01.javaとは、DB接続が追加され、セル書き出しが一部違います。
なお、
String url =
  "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=sjis";
ですが、localhostにホスト名、testにDB名が入ります。

また
Connection con =
  DriverManager.getConnection(url,"root","rootのパスワード");
は、rootにユーザー名が、"rootのパスワード"にパスワードが入ります。




●OpenOffice.java
 前のものとまったく同じですので、省略します。





●Calc.java
 前のものに、以下のメソッドを追加します。
    /**
     * セルをとってきます。
     * @param oSheet とってくるシート
     * @param x 桁(0から始まる)
     * @param y 行(0から始まる)
     * @return XCell
     */
    public XCell getCell(XSpreadsheet oSheet,int x,int y)
    		throws java.lang.Exception
	{
			return	oSheet.getCellByPosition(x,y);
	}

(上記< > ¥は、本当は半角)

とりあえず、今回はここまで。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JavaからOpenOfficeを操作する部分、Calcを操作する部分に分けてみた

2007-02-07 16:19:23 | OpenOffice

昨日、Javaから、Javaのアプリケーションから、OpenOffice Calc(表計算)を操作する方法について書いたけど、そこにあがっているサンプルソース

Java から OpenOffice.org の操作(Hello World 編)
http://www.okapiproject.com/java/java_tools/openoffice/developer/openoffice_program1.htm


そのままでは、使いにくいので、そこのSample01を、
・OpenOffice立ち上げまでのクラス

・表計算(Calc)操作のクラス
にわけて見ました。

そうすると、こんな感じで、Javaから、OpenOfficeを立ち上げ、セルB2に、Hello Worldと書き出せます。

●Hello Worldと書き出すサンプル(Sample01)
/**
 * サンプルプログラム
 * 参考にしたサイト
 * http://www.okapiproject.com/java/java_tools/openoffice/
 *                          developer/openoffice_program1.htm
 * (本当は1行です。長いので、きりました)
 * 
 */
import com.sun.star.lang.*;
import com.sun.star.bridge.*;
import com.sun.star.uno.*;
import com.sun.star.frame.*;

import com.sun.star.sheet.*;
import com.sun.star.container.XIndexAccess;
import com.sun.star.table.*;
import com.sun.star.beans.PropertyValue;

/**
 * OpenOffice.org の表計算(Calc)に「Hello World」と出力する。
 */
public class Sample01 {

    /**
     * 起動パラメータなし。
     * @param args String
     */
    public static void main(final String[] args)
    {
      	OpenOffice of = null;
        Calc	cl = null;

		//======================================//
		//	OpenOfficeと接続
		//======================================//
        XMultiServiceFactory xMSF = null;
        try
        {
        	of = new OpenOffice();
        	xMSF	=	of.connect();

        }
        catch (java.lang.Exception e)
        {
            e.printStackTrace();
            System.out.println("OpenOfficeの起動に失敗");
        }

		//======================================//
		//Calc を起動
		//======================================//
        XSpreadsheetDocument myDoc = null;
        try
        {
	        cl = new Calc(xMSF);
   	    	myDoc	=	cl.open("private:factory/scalc","_blank");
        }
        catch (java.lang.Exception e)
        {
            e.printStackTrace();
            System.out.println("表計算の起動に失敗");
        }


		//======================================//
		//	シートを取得
		//======================================//
        XSpreadsheet oSheet = null;
        try
        {
			oSheet = cl.getSheetByPosition(myDoc,0);
        }
        catch (java.lang.Exception e)
        {
            e.printStackTrace();
            System.out.println("シートの取得に失敗");
        }
			
		//======================================//
		//	セルに書き出し
		//======================================//
        XCell oCell = null;
        try
        {
        	oCell = cl.getRange(oSheet,"B2");
            //B2セルに「Hello World」と設定
            oCell.setFormula("Hello World");
        }
        catch (java.lang.Exception e)
        {
            e.printStackTrace();
            System.out.println("セル書き出しで失敗");
        }

        //処理終了
        System.exit(0);
    }
}

で、以下、このように分けたときの、
・OpenOffice立ち上げまでのクラス
・表計算(Calc)操作のクラス
のクラスについてです。



■OpenOffice立ち上げまでのクラス
こんな感じになります。
/**
 * OpenOfficeクラス
 * OpenOffice全体の基本クラス
 * 起動をする
 */
import com.sun.star.lang.*;
import com.sun.star.bridge.*;
import com.sun.star.uno.*;
import com.sun.star.frame.*;

public class OpenOffice {

	//OpenOffice.org との接続
    String sConnectionString 	=	null;

    /*
     *	ポート番号 
     */
	public	int	port		=	8100;

    /*
     *	接続ホスト名 
     */
	public	String	hostname	=	"localhost";

    /**
     * OpenOffice.orgとの接続
     * @param connectStr String
     * @return XMultiServiceFactory
     * @throws Exception Exception
     */
    public XMultiServiceFactory connect() throws java.lang.Exception
    {

	String connectStr = "uno:socket,host="+ hostname + ",port="
 		 + Integer.toString(port)+";urp;StarOffice.NamingService";
        XMultiServiceFactory xMSF = null;

		//==============================//
		// コンポーネントを初期化する
		//==============================//
        XComponentContext cnt = null;
     	cnt = 
     	 com.sun.star.comp.helper.Bootstrap.createInitialComponentContext(null);
		
		//==============================//
		//	サービスマネージャー取得
		//==============================//
        XMultiComponentFactory localMgr =cnt.getServiceManager();

		//==============================//
		//  接続		
		//==============================//
        Object xUrlResolver = localMgr.createInstanceWithContext(
                "com.sun.star.bridge.UnoUrlResolver",cnt);

		XUnoUrlResolver urlResolver	=	null;
        urlResolver =
    	        (XUnoUrlResolver) UnoRuntime.queryInterface(
                XUnoUrlResolver.class,xUrlResolver);

        Object rInitialObject = urlResolver.resolve(connectStr);

        XNamingService rName =
    	        (XNamingService) UnoRuntime.queryInterface(
                XNamingService.class,rInitialObject);

        if (rName != null)
        {
	
   	        Object rXsmgr =
       	        rName.getRegisteredObject("StarOffice.ServiceManager");

            xMSF = (XMultiServiceFactory) UnoRuntime.queryInterface(
                    XMultiServiceFactory.class,rXsmgr);
        }

		//==============================//
		//  かえる
		//==============================//
        return (xMSF);
    }
}


これで、
OpenOffice of = new OpenOffice();
XMultiServiceFactory  xMSF = of.connect();
とすれば、つながります。

ポートや接続先は、ofの属性になっているので、
変更する必要があれば、生成した後、connect()を呼ぶ前に設定します。



■表計算(Calc)操作のクラス
こんな感じになります。
/**
 * 表計算の操作
 */
import com.sun.star.lang.*;
import com.sun.star.bridge.*;
import com.sun.star.uno.*;
import com.sun.star.frame.*;

import com.sun.star.sheet.*;
import com.sun.star.container.XIndexAccess;
import com.sun.star.table.*;
import com.sun.star.beans.PropertyValue;

public class Calc {

	XMultiServiceFactory xMSF	=	null;
	
	public	Calc(XMultiServiceFactory xMSF)
	{
		this.xMSF	=	xMSF;
	}
	
    /**
     * Calc ドキュメントを起動します。
     * @param doc オープンするドキュメント
     * @param type _blankなど、開き方
     * @return XSpreadsheetDocument
     */
    public XSpreadsheetDocument open(String doc,String type)
    					 throws java.lang.Exception
    {

        //define variables
        XInterface oInterface;
        XDesktop oDesktop;
        XComponentLoader oCLoader;
        XSpreadsheetDocument oDoc = null;
        XComponent aDoc = null;

        oInterface =
          (XInterface) xMSF.createInstance("com.sun.star.frame.Desktop");
        oDesktop =
           (XDesktop)UnoRuntime.queryInterface(XDesktop.class,oInterface);
        oCLoader =
           (XComponentLoader) UnoRuntime.queryInterface(
           					XComponentLoader.class,oDesktop);
        PropertyValue[] szEmptyArgs = new PropertyValue[0];
        aDoc = oCLoader.loadComponentFromURL(doc,type, 0, szEmptyArgs);
        oDoc = (XSpreadsheetDocument) UnoRuntime.queryInterface(
                    XSpreadsheetDocument.class,aDoc);
        return oDoc;
    }
    
    /**
     * シートをとってきます。
     * @param myDoc とってくるドキュメント
     * @param pos 取ってくるシート(0先頭)
     * @return XSpreadsheet
     */
    public XSpreadsheet getSheetByPosition
    		(XSpreadsheetDocument myDoc,int pos)
    		throws java.lang.Exception
    {
        XSpreadsheet oSheet = null;

            //Calc のシートオブジェクトを取得
        XSpreadsheets oSheets = myDoc.getSheets();
        XIndexAccess oIndexSheets =
                (XIndexAccess) UnoRuntime.queryInterface(
                    XIndexAccess.class,oSheets);

            //一番目のシートオブジェクトを取得
        oSheet = (XSpreadsheet) UnoRuntime.queryInterface(
                   XSpreadsheet.class,oIndexSheets.getByIndex(pos));

 		return	oSheet;
    }

    /**
     * セルをとってきます。
     * @param oSheet とってくるシート
     * @param posstr 場所
     * @return XCell
     */
    public XCell getRange(XSpreadsheet oSheet,String posstr)
    		throws java.lang.Exception
	{
		//==========================//
		//指定されたレンジを取ってくる
		//==========================//
        XCellRange xCellRange = oSheet.getCellRangeByName(posstr);
		com.sun.star.sheet.XSheetCellRange xSheetCellRange =
       		(com.sun.star.sheet.XSheetCellRange) UnoRuntime.queryInterface(
            	com.sun.star.sheet.XSheetCellRange.class,xCellRange);

		com.sun.star.sheet.XSheetCellCursor xSheetCellCursor =
                oSheet.createCursorByRange(xSheetCellRange);

		//==========================//
		//そこにカーソルを持ってきて
		//==========================//
		com.sun.star.table.XCellCursor xCursor =
                (com.sun.star.table.XCellCursor) UnoRuntime.queryInterface(
                    com.sun.star.table.XCellCursor.class,
                    xSheetCellCursor);

		//==========================//
		//	カーソルの先頭を返す
		//==========================//
		return	xCursor.getCellByPosition(0, 0);
	}
}



上記でconnectを行った後、その返り値を引数として

Calc cl = new Calc(xMSF);

を行い、その後

XSpreadsheet myDoc = cl.open("private:factory/scalc","_blank");

とすれば、シートが取得できます。
あとは、いろいろ操作することになります。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Javaから、OpenOffice Calc(表計算)を操作する

2007-02-06 18:15:35 | OpenOffice

Javaのアプリケーションから、OpenOffice Calc(表計算)を操作する方法に関しては、
Java から OpenOffice.org の操作(Hello World 編)
http://www.okapiproject.com/java/java_tools/openoffice/developer/openoffice_program1.htm


に書いてあるけど、このとおり素直にやっても、エラーになる。

まず、そこに書かれているとおり

1.C:¥Program Files¥OpenOffice.org 2.1¥program¥classes
(上記¥は実際には半角。つまり、OpenOfficeのprogramフォルダにあるclassesフォルダの下)
 にある、全部のjarファイルを、クラスパスに通す。
 →これをしてもエラーにならなかった。

2.そこにある、Sample01クラスをコピーしてSample01.javaファイルを作成、コンパイル
→これもOK

で、実行しても、エラーになる。
理由は、OpenOfficeが、Listenモードで立ち上がっていないから。

で、その立ち上げ方なのですが、
ここ
JooConverter
http://hp.vector.co.jp/authors/VA027994/joo/jooconverter.html

を参考にしました(といっても、Listenモードで立ち上げ方を書いてあるサイトではないのだけれど)

結局

3.コマンドラインから
"C:¥Program Files¥OpenOffice.org 2.1¥program¥soffice.exe" "-accept=socket,port=8100;urp;"

(実際には、¥は半角。1行で書いてください。""で囲むのは、そのまま囲み、.exe"のあとの半角スペースも、ちゃんとそのまま半角スペースあけた後に、"をまた書いてください)
と入力します。そうすると、Listenモードで立ち上がり、

4.プログラムを実行すると、ちゃんとOpenOffice Calcが立ち上がって、Hello Worldと書きます。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

OpenOfficeで、データベース(Base)の内容を、表計算(Calc)に書いて印刷するマクロ

2007-02-02 20:26:38 | OpenOffice

 OpenOfficeの話で、いままで印刷とデータベースの話を書いたので、2つあわせて
データベース(Base)の内容を、表計算(Calc)に書いて印刷するマクロについて取り上げてみます。




■仕様

●C:¥temp¥テスト.ods(¥は、本当は半角)にあるOpenOffice Calc(表計算)の"テスト"というシートを開き、

●データベース名が"テスト用"という名前の、データベースをアクセスして、
"Select * From 顧客テーブル"
を実行して、顧客テーブルの内容を受け取り

●DBの内容を
  1項目目をA桁、
  2項目目をB桁、
  3項目目をC桁、
  4項目目をD桁、
に、1行目から、1レコードづつ、順に、上記の「テスト」というシートに書いて
印刷する




■ソース

ソースはこんなかんじです。
sub Main
	dim document   as object
	dim dispatcher as object
	dim args1(1) as new com.sun.star.beans.PropertyValue
	Dim oDoc as object
	
	'**** データベース関係
	Dim DatabaseContext as object
	Dim DataSource as Object
	Dim Connection as Object
	Dim Statement as Object
	Dim ResultSet as Object

 	'**** スプレッドシートを開く
	sURL = ConvertToURL("C:¥temp¥テスト.ods") 
	oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) 

 	'**** 値を設定する
	Sheet= oDoc.Sheets.getByName("テスト") 	'	シートを選ぶ

	REM  ***** データベースのコネクション  *****
	DatabaseContext=createUnoService("com.sun.star.sdb.DatabaseContext") 
	DataSource=DatabaseContext.getByName("テスト用") 


	REM  ***** SQLの実行  *****
	Connection = DataSource.GetConnection("","")
	Statement = Connection.createStatement()
	ResultSet= Statement.executeQuery("Select * From 顧客テーブル")

	REM  ***** レコードをワークシートに設定 *****
	If  IsNull(ResultSet) Then
		MsgBox("レコードがありません")
	Else
		i	=	0
        While   ResultSet.next
			Cell =Sheet.getCellByPosition(0,i)	
			Cell.setString(ResultSet.getString(1))		
			Cell =Sheet.getCellByPosition(1,i)	
			Cell.setString(ResultSet.getString(2))
			Cell =Sheet.getCellByPosition(2,i)	
			Cell.setString(ResultSet.getString(3))
			Cell =Sheet.getCellByPosition(3,i)	
			Cell.setString(ResultSet.getString(4))
			i = i + 1
        Wend
	End If

	'**** 印刷
	mPrintopts = oDoc.getPrinter() 
 	mPrintopts(0).Name = "CopyCount"
 	mPrintopts(0).Value = 1		'1個出力
 	oDoc.Print(mPrintopts())
end sub

(上記¥は、本当は半角)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

OpenOfficeのマクロから印刷で、前回やったより簡単な方法

2007-02-01 18:29:13 | OpenOffice

 前に、OpenOffice Base(データベース)でマクロから印刷でやった、印刷のやりかた、そこでもいい方法かどうかはわかりませんって書きましたけど、もっといいやり方があったので、それを載せて置きます。




■仕様
C:¥temp¥テスト.ods(¥は、本当は半角)にあるOpenOffice Calc(表計算)のシートを1部印刷します(一番上にあるシートを印刷します)

■ソース

こんなかんじです。
sub Main
 	'**** スプレッドシートを開く
   sURL = ConvertToURL("C:¥temp¥テスト.ods") 
   oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) 

  '**** 印刷
   mPrintopts = oDoc.getPrinter() 
   mPrintopts(0).Name = "CopyCount"
   mPrintopts(0).Value = 1	'1個出力
   oDoc.Print(mPrintopts())
end sub

(¥は、本当は半角)

  '**** 印刷 から下の4行が、印刷のためのコードです。

<<参考にしたサイト>>
http://api.openoffice.org/servlets/ReadMsg?list=dev&msgNo=3516

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

OpenOffice Calc(表計算)で、シートを自動的にOpenして、値編集、印刷

2007-01-31 14:52:33 | OpenOffice

 前回のOpenOffice Base(データベース)のレポートはいまいちでした(>_<!)
 仕方ない。。。表計算ソフトにデータをいれて、それを出力することを考えよう!!

 ってことで、OpenOffice Calc(表計算)で、シートを自動的にひらき、値をいれて(数値と文字)、印刷するっていうところまでやってみました。




■仕様

 現時点ですでに、C:¥temp¥テスト.ods(¥は本当は半角です)に、OpenOffice Calc(表計算)で作ったシートがあります。そして、そのシートの1つに、”テスト”というシートがあります。

このとき、このテストというシートに対して、
 セルB2 に  "値を設定してみました" という文字列
 セルB3 に  12345 という数値
を設定して

印刷します




■ソース

こんなかんじです。
sub Main
	dim document   as object
	dim dispatcher as object
	dim args1(1) as new com.sun.star.beans.PropertyValue
	Dim oDoc as object

	'**** プロパティを入れるところ
         Dim pProp(1) As New com.sun.star.beans.PropertyValue 
 
 	'**** スプレッドシートを開く
         sURL = ConvertToURL("C:¥temp¥テスト.ods") 
         oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) 

 	'**** 値を設定する
	Sheet= oDoc.Sheets.getByName("テスト") 	'シートを選ぶ
	CellRange=Sheet.getCellRangeByName("B2") 	'  B2に値設定
	CellRange.setString("値を設定してみました")		
	CellRange=Sheet.getCellRangeByName("B3") 	'  B3に数値設定
	CellRange.Value = 12345

	'**** 印刷
         document = oDoc.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

	args1(0).Name = "Copies"
	args1(0).Value = 1
	args1(1).Name = "Collate"
	args1(1).Value = false

	dispatcher.executeDispatch(document, ".uno:Print", "", 0, args1())
end sub

(上記¥は、本当は半角)

というところで、今日のところはおしまい。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

OpenOffice Base(データベース)でマクロから印刷

2007-01-30 14:19:42 | OpenOffice

 OpenOffice Baseを使った話で、今日は印刷。
 ただこれは、マクロを記録して出てきたやり方なので、いい方法かどうかはわかりません。
 とにかく、こうやればできるという話。



■仕様

 C:¥temp¥テスト用1.odbというOpenOffice Baseのデータベースファイルがあって、その中にある「レポート1」を開き、そのページを印刷します(なお、¥は、本当は半角です)。

 つまり、昨日、開くところまでやったので、そのあと、印刷します。




■ソース

 マクロは、以下のとおりです
Sub Main

	'**** 書き出し用
   Dim oRep As object
   Dim document   As object
   Dim dispatcher As object
   Dim args1(1) As new com.sun.star.beans.PropertyValue
 

	'**** プロパティを入れるところ
   Dim pProp(1) As New com.sun.star.beans.PropertyValue 
 	'**** データベースを開く
   sURL = ConvertToURL("C:¥temp¥テスト用1.odb") 
   oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) 


 	'**** レポートとコネクションの接続
   oForms = oDoc.getReportDocuments() 
   oAConnection = oDoc.DataSource.getConnection("","") 

 	'**** プロパティを設定 Nameが属性 Valueが値
   pProp(0).Name = "ActiveConnection" 'コネクション
   pProp(0).Value = oAConnection 
   pProp(1).Name = "OpenMode" 		' デザインで開く?入力フォーム?
   pProp(1).Value = "open"		' 入力フォーム(openDesignだとデザイン)
    
	'**** フォームを開く
   oRep = oForms.loadComponentFromURL("レポート1","_default",0,pProp()) 


	'**** フォームの印刷
    document = oRep.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    args1(0).Name = "Copies"
    args1(0).Value = 1
    args1(1).Name = "Collate"
    args1(1).Value = false

    dispatcher.executeDispatch(document, ".uno:Print", "", 0, args1())

End Sub

(上記¥ < > は、本当は半角)
上記で赤で書かれているところが、ファイル名、フォーム名など、固有のものになります
(使うときは、実際のみなさんの開きたいものが、入ります)
青字のところが、今回の印刷部分です(ほかは前回と同じ)。

なお、フォームの場合には、上記の
oDoc.getReportDocuments()

oDoc.getFormDocuments()
に変わります(印刷部分は変わりません)




ということで、印刷まで、きました


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

OpenOffice Base(データベース)でマクロから「レポート」を開く方法&その前に(^^;)

2007-01-29 15:21:29 | OpenOffice

 以前、OpenOfficeのデータベースである、Baseにおいて、マクロを使って、フォームを開く方法を書いたので、今回はレポートを開く方法です。

 あ、それと、その前に、今回から、カテゴリにOpenOfficeを追加しました。




■仕様

C:¥temp¥テスト用1.odbというOpenOffice Baseのデータベースファイルがあって、その中にある「レポート1」を開きたい場合
(なお、¥は、本当は半角です)



■ソース

 マクロは、以下のとおりです
Sub Main
	'**** プロパティを入れるところ
   Dim pProp(1) As New com.sun.star.beans.PropertyValue 
 
 	'**** データベースを開く
   sURL = ConvertToURL("C:¥temp¥テスト用1.odb") 
   oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) 


 	'**** レポートとコネクションの接続
   oForms = oDoc.getReportDocuments() 
   oAConnection = oDoc.DataSource.getConnection("","") 

 	'**** プロパティを設定 Nameが属性 Valueが値
   pProp(0).Name = "ActiveConnection" 'コネクション
   pProp(0).Value = oAConnection 
   pProp(1).Name = "OpenMode" 		' デザインで開く?入力フォーム?
   pProp(1).Value = "open"		' 入力フォーム(openDesignだとデザイン)
    
	'**** フォームを開く
   oFormulario = oForms.loadComponentFromURL("レポート1","_default",0,pProp()) 

End Sub

(上記¥ < > は、本当は半角)

上記で赤で書かれているところが、ファイル名、フォーム名など、固有のものになります
(使うときは、実際のみなさんの開きたいものが、入ります)
青字のところが、フォームと違うところです。

つまり、フォームの場合は、
oDoc.getFormDocuments()
レポートの場合は
oDoc.getReportDocuments()

をつかって、対象ドキュメントを取得します。
なお、レポートのとき(つまり、今回の上記のソース)でも、その結果の受け取りをoFormsとしていますが、これは、変更点を最小にするためで、本当はoReportsなどの変数のほうがいいです(ただし、もちろん、oFormsのままでも、動作はするけど)




■しかし、その前に。。

 しかし、その前に!です。。

 そのレポートを作る話。
 OpenOfficeの2.1を使っているのですが、Baseでは、レポートをウィザードでつくるかたちになっていて、このウィザードでできるレポートが(^^;)
あの・・・

フォームから、印刷しましょうか(^^;)

ってかんじなのだ。。。。

なんか、もっと、まっとうなレポートを作る方法があるのかもしれない。。
それがみつかるまでは、フォームを印刷していたり、Writeの差込印刷のほうがいいのかなあ
(差し込み印刷使ってないので、よくわかんないけど。。)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

OpenOffice Base(データベース)でマクロからフォームを開く方法

2007-01-28 10:06:01 | OpenOffice

 OpenOfficeのデータベースである、Baseにおいて、マクロを使って、フォームを開く方法です(ダイアログではありません。そこに書かれているフォーム)
  starDesktop.loadComponentFromURLを2回使い、1回目はファイル名を指定してBaseアプリケーションを開き、2回目で、開きたいフォームを開きます。




■仕様
 C:¥temp¥テスト用1.odbというOpenOffice Baseのデータベースファイルがあって、その中にあるフォーム1を開きたい場合
(なお、¥は、本当は半角です)



■プログラム
 マクロは、以下のとおりです
Sub Main
	'**** プロパティを入れるところ
   Dim pProp(1) As New com.sun.star.beans.PropertyValue 
 
 	'**** データベースを開く
   sURL = ConvertToURL("C:¥temp¥テスト用1.odb") 
   oDoc = starDesktop.loadComponentFromURL(sURL,"_default",0,Array()) 


 	'**** フォームとコネクションの接続
   oForms = oDoc.getFormDocuments() 
   oAConnection = oDoc.DataSource.getConnection("","") 

 	'**** プロパティを設定 Nameが属性 Valueが値
   pProp(0).Name = "ActiveConnection" 'コネクション
   pProp(0).Value = oAConnection 
   pProp(1).Name = "OpenMode" 			'デザインで開く?入力フォーム?
   pProp(1).Value = "open"					 ' 入力フォーム(openDesignだとデザイン)
    
	'**** フォームを開く
   oFormulario = oForms.loadComponentFromURL("フォーム1","_default",0,pProp()) 

End Sub

(上記¥ < > は、本当は半角)

上記で赤で書かれているところが、ファイル名、フォーム名など、固有のものになります
(使うときは、実際のみなさんの開きたいものが、入ります)




■参考にしたものと、若干のつけたし

参考にしたサイトはこちらです
How To Load Forms and Reports inside a BASE document
http://www.oooforum.org/forum/viewtopic.phtml?t=29084


ただし、このサイトと、上記のサンプルで違うところがあります。
青字のところ、つまり、
starDesktop.loadComponentFromURL(sURL,"_blank",0,Array())
の第二引数です。

ここを、上記のサンプルのように
<<"_default"にすると>>
 まだそのフォーム、データベースが表示されていなければ、新規にウィンドウを開き表示し、表示されていれば、すでに開いているものをアクティブにします
→1個しか開きません

ここを、参考にしたサイトのように
<<"_blank"にすると>>
 フォームが開いているか否かにかかわらず、かならず、ウィンドウを開きます
→同じウィンドウを、閉じない限り何個も開きます。

したの質問を見ると、やっぱ、_defaultのほうが、よさそう(いっぱいある人にとって、いくつも開かれてもねえ。。)なので、上記のサンプルのように、今回は"_default"にしました。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

OpenOfficeのデータベースで、データをアクセスする(Javaに似てる)

2007-01-26 17:41:20 | OpenOffice

OpenOffice2.0からAccessみたいなデータベース、OpenOffice Baseが
でてるけど、Accessみたいに、マクロでアクセスする方法は?

と思っていろいろやってみました。




■仕様

 現在、テスト用というデータベース
(OpenOfficeベースを立ち上げると、初めに選択する、または作るやつ)
があって、そのデータベースの中に
「顧客テーブル」というのを作成している場合、

その顧客テーブルのデータを取得して
(Select * From 顧客テーブル)
その取得したレコードの第一項目を表示する




■ソース
マクロは、こんな感じです
REM  *****  BASIC  *****

Sub Main
	Dim DatabaseContext as object
	Dim DataSource as Object
	Dim Connection as Object
	Dim Statement as Object
	Dim ResultSet as Object

	REM  ***** データベースのコネクション  *****
	DatabaseContext=createUnoService("com.sun.star.sdb.DatabaseContext") 
	DataSource=DatabaseContext.getByName("テスト用") 


	REM  ***** SQLの実行  *****
	Connection = DataSource.GetConnection("","")
	Statement = Connection.createStatement()
	ResultSet= Statement.executeQuery("Select * From 顧客テーブル")

	REM  ***** レコードの表示  *****
	If  IsNull(ResultSet) Then
		MsgBox("レコードがありません")
	Else
        While   ResultSet.next
                MsgBox(ResultSet.getString(1))
        Wend
	End If
	
End Sub

(上記< > ¥は、本当は半角です)

なんか、Javaっぽいですね(^^)




■実行
 顧客テーブルにデータを入れて

 ツール→マクロ→マクロの実行

 で、上記のことを記述したマクロを選べばOK




■参考にしたサイト

http://akitapa-sta.homelinux.com/macro.html

http://srvhat09.anaheim-eng.com/modules/tinyd5/index.php?id=5


 

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

OpenOfficeで表計算にボタンを貼ってマクロを動かすとき、デザインモードに注意!

2007-01-25 18:36:07 | OpenOffice

うーん、ウィリアムのいたずらだあ(>_<!)

OpenOfficeのCalc(表計算)で、マクロを作る場合、こんな感じでやります
1.ツール→マクロ→マクロの管理→OpenOfficeOrg.Basicを選択

2.第ログが開くので、
  マイマクロ
    Standerd
      Module1
 とかいうのがあれば、それを選択し、マクロのある場所Mainガ選択されていたら
 「編集」ボタン
 なければ適当に新規追加して、その後「編集」ボタンをクリック

3.そーすると、エディタが出るので、そしたら、
Sub Main
	MsgBox("こんにちはです")
End Sub

みたいなかんじで、プログラムを書く(上記はメッセージボックスを出す)


4.表示→ツールバー→フォームコントロールを選択
 フォームコントロールを出す

5.ボタンを適当に貼る

7.そのボタンを選択した状態で右クリック、「コントロール」を選択

8.ダイアログが出たらイベントタブを押し、作動時の横の「…」ボタンをクリック

9.割り当てられたアクションで、「マクロ」ボタンをクリック、その後
  マクロの選択で、2で編集したものを選ぶ

10.OKで、ダイアログを閉じていく。

ここまでは、やると思うんです。
でも、これでは、動きません(>_<!)
なぜか。。。

最後の1個が抜けています

11.フォームコントロールのところにある、三角形と定規、鉛筆のマーク、
    [デザインモード オン/オフ]をクリックし、デザインモードをオフにします。

(バージョンによってある場所やマークは違いますが、とにかく、デザインモードをオフ!!)

そーすると、動きます。。。

コレがわかんないで1時間悩んだよ(;_;!)

ちなみに、この手順について、ここに出てました。
ボタンクリックからダイアログを出す
http://unit.aist.go.jp/itri/linuxing/document/openoffice/faq/button.html


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

OpenOfficeに入ってるデータベース、Accessみたいに使えるんですね!

2007-01-24 18:18:50 | OpenOffice

OpenOfficeの2.1をインストールしたんですけど、
OpenOffice Baseって、Accessみたいな、データベースなんですね。

ほとんど同じ操作性で、便利便利っす。。




今度、テーブル作成から、フォーム入力まで書くけど、
とりあえず、紹介すると。。。

まず、はじまりは、こんなかんじ

うーん、Accessでは、おなじみの、こいつですね





で、テーブル定義は、こんなかんじ。。。

Accessやってた人にはおなじみだし、やってない人でも、
Accessの本を見れば、ほとんど同じような感じなので、
使えると思う。




で、フォームをウィザードでやる場合は、こんなかんじ

この後の画面から、下のような感じで

Accessと書いてある言葉は違うけど、テキトーにやっていけば、
出来上がりを見て、想像つくと思う




で、できたフォームの入力画面は、こんなかんじ


これを、テーブルで確認するとこんなかんじ





なわけで、Accessの操作方法が分かっている人なら問題なく操作
できそうだし(ここまでは)、知らない人でも、Accessの本を
見ながら操作すれば、できそうなかんじ。。。

コレで、ただって、ちょっとすごい。。
Access持ってない人には、いいかもお。。

あとは、レポートとマクロだよねえ。。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする