Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
Microsoft Excel 11.0 Object library
投稿日時: 18/03/02 12:41:52
投稿者: yamasho

お世話になります。
 
Office2013とOffice2003のインストールCDを所有しています。
PCにインストールしてあるのはOffice2013のみです。
 
Accessのmdbファイルで、
Microsoft Excel 11.0 Object library
を参照設定する必要が出てきました。
 
Office2003のインストールCDから
Microsoft Excel 11.0 Object library
のみを、どこかにコピーすることは可能でしょうか?
 

回答
投稿日時: 18/03/02 13:33:39
投稿者: Suzu

のみを取り出すって、ライセンス的にどうなんでしょう ^^; 詳しくは判りません。
 
少なくとも、そのファイルのみをコピペして済む話ではないですよ。
 
 
 
事前バインディング だから、参照設定が必要。
実行時バインディングに変えれば 参照設定は不要です。
 
 
色々な書き方は考えられますが
 
事前バインディング
Dim xlsApp As Excel.Application
Set xlsApp =New Excel.Application
 
  ↓
 
実行時バインディング
Dim xlsApp As Object
Set xlsApp =CreateObject("Excel.Application")
 
そのた「xl」で始まる定数等は使えません。数値に置き換える必要があります。

投稿日時: 18/03/02 15:07:48
投稿者: yamasho

Suzu様
 
お世話になります。
実行時バインディングにしたつもりですが、
 
xlsSheet.Range(xlsSheet.Cells(1, 1), xlsSheet.Cells(5, I)).HorizontalAlignment = xlCenter
 
のところで「変数が定義されていません」になってしまいます。
私にやり方が悪いのでしょうか?
 
それとも「xlCenter」を使いたいときは
事前バインディングにしないといけないのでしょうか?
 
参照設定しているときは問題なく動いてくれます。
 

回答
投稿日時: 18/03/02 16:40:45
投稿者: Suzu

引用:
xlsSheet.Range(xlsSheet.Cells(1, 1), xlsSheet.Cells(5, I)).HorizontalAlignment = xlCenter
  
のところで「変数が定義されていません」になってしまいます。
私にやり方が悪いのでしょうか?
  
それとも「xlCenter」を使いたいときは
事前バインディングにしないといけないのでしょうか?

 
引用:
「xl」で始まる定数等は使えません。数値に置き換える必要があります。

 
xlCenter は、10進数の場合、-4108 です。
これらは、Excel で決められてた 定数で、参照設定をする事で使用する事ができる様になります。
 
この実体は、参照設定をした状態の VBE画面で、F2 を押すと オブジェクトブラウザが表示されます。
ここで xlCenter を押すと
下の方に
 
Const xlCenter = -4108 (&HFFFFEFF4) と表示されます。
 
10進数 -4108
16進数 FFFFEFF4
の意味で、
 
xlsSheet.Range(xlsSheet.Cells(1, 1), xlsSheet.Cells(5, I)).HorizontalAlignment = -4108
 
と書き替える事ができる事が判ります。
 
もっと簡単には、
イミディエイトウィンドで ?xlCenter とすれば、-4108 が返ってきますので そこでも判ります。
 
 
要は、 Const xlCenter = -4108 が Excel の中で宣言されていて、
参照設定を行うと、これが使える様になる。 って事です。

投稿日時: 18/03/03 09:38:55
投稿者: yamasho

Suzu様
 
お世話になります。
うまくできました。
 
「xlCenter」などは、10進数に置き換えなくてはならないこと、
イミディエイトウィンドでの確認方法など、
知らないことを知ることが出来ました。
 
大変ためになりました。
ありがとうございました。