カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

ACCESS Excelオートメーションメモ

Dim xlApp   As Object
Dim xlBook  As Object
Dim xlSheet As Object

Dim FileName   As String
Dim myFileName As String
Dim myShape    As Object

FileName = Environ("USERPROFILE") & "\デスクトップ\sample.xls"

Set xlApp   = CreateObject("Excel.Application")
Set xlBook  = xlApp.Workbooks.Add
Set xlSheet = xlBook.WorkSheets(1)

With xlSheet

    .Range("A18:D18").MergeCells = True       'セルを結合
    .Range("A18").HorizontalAlignment = -4108 '横位置を中央揃えに
    .Range("A18").Font.Size = 48              'フォントの大きさを変更

End With

'保存
xlBook.Saveas (FileName)

xlBook.Close

xlApp.Application.Quit

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
0
2,698 views

ACCESS VBA Excelオートメーションの例

参照設定なしでACCESSからExcelファイルを作成する方法です。
罫線等の定数は使用できないため、実際の数値を与えています。

Dim xlApp    As Object
Dim xlBook   As Object
Dim xlSheet  As Object
Dim FileName As String
FileName = Environ("USERPROFILE") & "\デスクトップ\test.xls"

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(FileName)
Set xlSheet = xlBook.WorkSheets(1)

続きを読む…»

0
9,102 views

オートマクロ

ACCESSファイルを開いたときに自動的に実行されるマクロ

・マクロを「autoexec」という名前で作成する。
・モジュールに書いた関数を実行することもできます。
※Subルーチンではダメ。Functionで宣言する。
関数を実行する場合は、アクションに「プロシージャの実行」を選択し、
プロシージャ名に関数名()を入力する。

ここで設定したオートマクロは、起動時の設定での「フォーム/ページの表示」よりも優先されます。

0
1,700 views

ACCESS クエリ内での改行入力

Visual Basicでは改行を表現する際、vbCrLfと表記しますが、
更新クエリ等で改行を含んだ処理をしたいときは利用できません。

その場合、以下のように改行を表現します。

Chr(13) & Chr(10)

Chr(10) = LF(ラインフィード)
Chr(13) = CR(キャリッジリターン)

+1
21,466 views

ACCESS コントロールを追加できなくなった時

テーブルのフィールドと同様で、コントロールもカウントされているらしく
追加できなくなることがある。
そのとき、フォーム又はレポートの名前を変更して再度追加してくださいのようなメッセージが出るが、最適化しても追加はできない。

【解決方法】
新規にmdbを作成し、インポートし直す

0
1,617 views

ACCESS 2000 パフォーマンスの向上について2

現象

名前の自動修正機能が有効になっているデータベースで、データベース オブジェクトを開く際に時間がかかる場合があります。

原因

セキュリティ保護されたデータベースで名前の自動修正が オン になっている状態でオブジェクトを開くとき、名前の自動修正機能を使用してバインド エラーのトラック、修正、記録を行うには、そのオブジェクトに対する [構造の変更] 権限が必要です。ユーザーにこの権限がない場合、変更結果を保存することができないため、そのユーザーがオブジェクトを開くたびに自動修正機能による変更が発生し、オブジェクトを開くのに時間がかかります。

解決方法

そのオブジェクトの [構造の変更] 権限を持っているユーザーがオブジェクトを開きます。その結果、変更が保存されます。
または、名前の自動修復機能を オフ に設定します。

詳細

名前の自動修正機能 オン になっているかどうかを確認するには、[ツール] メニューで [オプション] をクリックして [全般] タブをクリックします。名前の自動修正機能に関する 3 つのチェック ボックスを確認してください。

[名前の自動修正情報をトラックする]
[名前の自動修正を行う]
[名前の自動修正の変更を記録する]

[名前の自動修正情報をトラックする] チェック ボックスが オン になっている場合、名前の自動修正機能が有効になっています。

0
3,377 views

ACCESS 2000 パフォーマンスの向上について1

現象

テーブルを開くときにデータベース内のリンク テーブルの処理速度が遅いことや、更新の実行に予想以上の時間がかかることがあります。
Microsoft Access 2000 より前のバージョンからデータベースの変換を実行した後に、この現象が発生する場合があります。ただしこの変換を実行していない場合でも、このような現象が発生する可能性があります。

原因

データベースに多数のリンク テーブルが存在し、各リンク テーブルに多数のリレーションシップが設定されています。また、開こうとしているテーブルの “サブデータシート名” プロパティが [自動] に設定されています。このような場合、テーブルを開くのに時間がかかることがあります。サブデータシートは Access 2000 で導入された新しい機能です。このため、Access 2000 より前のバージョンからデータベースを変換した場合に、この現象が顕著に現れる可能性があります。

解決方法

この問題を回避するには、バックエンド データベース内の各テーブルの “サブデータシート名” プロパティを [なし] に設定します。この設定の変更は、手動で行うか、コードを使用して行うことができます。

サブデータシート名を手動で設定する
“サブデータシート名” プロパティを手動で設定するには、次の手順を実行します。
バックエンド データベースのテーブルをデザイン ビューで開きます。
[表示] メニューの [プロパティ] をクリックします。
“サブデータシート名” プロパティを [なし] に設定します。
テーブルを保存して、閉じます。

0
6,780 views

ACCESS クエリとSQLのどっちが速いか

クエリとSQLの実行速度の違いを計ってみた。

テーブル作成クエリと追加クエリの2つを実行してみる。
SQLはDAO.DatabaseオブジェクトのExecuteメソッドを使用。

クエリ:サンプルクエリの実行に約8秒
SQL:サンプルSQLの実行に約16秒

クエリのほうが速かった。

0
5,614 views

クエリー内でReplaceなどの関数を使いたい

Microsoft ACCESSのクエリーの中で、Replaceなどの関数を使おうとした場合、
未定義関数とのエラーが出て使えません。
これはOffice2000では使用できない機能となっているようです。
使用できるのは2002以降。

要は例の「VBE6.DLL」のバージョンアップである。
これは以前にもACCESS 2007のランタイムをインストールした際にアップデートされたが、
この時、MDBファイルが最適化できなくなって結局元に戻した。

今回おこなったのは
「Microsoft® Visual Basic® for Applications (VBA) アップデート – Q822150」
http://www.microsoft.com/downloads/details.aspx?FamilyId=DA1A7ABA-CD3D-458B-9729-AB9094C9BD3F&displaylang=ja
以前のことがあったので心配だったが、結果大丈夫そうだ。
今回は6.0.87.14から6.4.99.69にアップデートされた。

0
5,258 views

XP レジストリエラー

ACCESSを触っていたら、完全に固まったわけではないが、動かなくなったので
強制終了ではなくファイルメニューより終了させた。

その後、再起動する際にメモリのエラー(?)が出た。
恐らくアドレス不明でメモリが開放できない、みたいなことだと思われる。

再起動後、MDBを開いて空のテーブルにクエリでデータを追加しようとしたら、
更新可能なクエリである必要があります。と言われ追加できなくなってしまった。

他のPCから試みても、どうも読取専用になってしまっているようで、できなかった。
他のPCからはデータ元の削除などもアクセス拒否され、できなかった。

はじめは、「ACCESS 更新可能なクエリ」等で調べたが、有用な結果は得られなかった。

そこで、[コンパネ]->[管理ツール]->[イベントビューワ]でエラーログを見ると、レジストリのエラーが4件出ていた。

で、「XP レジストリ 復元」調べたが、解決方法として出てきたのは
システムの復元、もしくはデフラグ、ブートプロンプトで「scanreg /fix /opt」を実行する、など。
scanregはXPで実行ができないので、msconfigにてセーフモードで起動してみる。
しかし、scanregが使用できるわけではなかった。

ので、システムの復元をしてみることに。
システムの復元は[スタート]->[アクセサリ]->[システムツール]->[システムの復元]
1日前まで復元したら復活した。

0
1,595 views