' Excelのインスタンスを作成
Public appWorld As New Excel.Application
' Excelブックのインスタンスを作成
Public wbWorld As Excel.Workbook
 
1番上のソースがユーザ定義型が定義されていないのでエラーが
でできますけど、プロジェクトの参照設定でどのタイプライブラリを
選べばいいのか分らないのでお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

この質問の直前の質問「VBにて起動アプリの取得」で、答えております。



プロジェクトの参照設定で
Microsoft Excel x.0 Object Libraryを指定
(x.0はエクセルのバージョンによって、違う数字です)

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=200123
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q実行時エラー'1004': アプリケーション定義またはオブジェクト定義のエラーです。

Excel VBA(Excel2000)について質問です。
セルの入力規則を設定するvalidationプロパティ設定時に表記エラーが起こるのですが、どういった原因なのか知りたいです。
そのエラーを起こす手順ですが、
1. 新規ブックを作成する
2. Visual Basic Editorを使用して、Sheet1に以下のコードを埋めこむ:

Private Sub Worksheet_Activate()
  With Cells(1, 1).Validation
    .Delete
    .Add Type:=xlValidateList, Formula1:="test1,test2"
  End With
End Sub

3. Sheet1 ←→ Sheet2 or Sheet3をタブで切り替える
  → 問題なく作動する
4. Sheet1の任意の場所に、コントロール ツールボックスのコマンドボタンを配置する
5. Sheet1 ←→ Sheet2 or Sheet3をタブで切り替える
  → これも問題なく作動する
6. 4.で配置したコマンドボタンを押す
7. Sheet1 ←→ Sheet2 or Sheet3をタブで切り替える
  → 表題のエラーが発生する

といったように、ボタンやチェックボックス等を配置したシートにおいてvalidation.addメソッドを使用すると、何故かエラーが発生します。この発生パターンが見つかるまでずっと悩んでいました。
今現在は、一応、他の方法で回避できてはいますが、どうしてこのエラーが出るのかはっきりしたいので、ご存知の方はどうぞご指導お願い致します。

Excel VBA(Excel2000)について質問です。
セルの入力規則を設定するvalidationプロパティ設定時に表記エラーが起こるのですが、どういった原因なのか知りたいです。
そのエラーを起こす手順ですが、
1. 新規ブックを作成する
2. Visual Basic Editorを使用して、Sheet1に以下のコードを埋めこむ:

Private Sub Worksheet_Activate()
  With Cells(1, 1).Validation
    .Delete
    .Add Type:=xlValidateList, Formula1:="test1,test2"
  End With
End Sub

3. Sheet1 ←→ Sheet2 or S...続きを読む

Aベストアンサー

> 6. 4.で配置したコマンドボタンを押す

この操作でコマンドボタンがアクティブ状態になってしまうのが原因のようですね。これはチェックボックスとかリストボックス等でも起こると思います。
最も簡単な対処方法としては、Cells(1,1).SelectとかRange("A1").SelectをWith Cells(1, 1).Validation の前に記述し、特定のセルをアクティブにする方法でしょう。

Qなぜ「Workbook」ではなく「Workbook

なぜ「Workbook」ではなく「Workbooks」なのでしょうか?
エクセルVBAについて教えてください。

ファイルのタイトルバーのところに、文字を入れたくてVBAコードを調べていたら
Workbooks.Application.Caption = "タイトル"
と言うコードが出てきました。

このコードでやりたいことが行えるので問題ないのですが、
なぜファイル(ブック)は一つしか開いてないのに、「Workbooks」なのでしょうか?

Aベストアンサー

■Application クラス
・EXCEL本体の親ウインドウ側のクラス
・主なプロパティとして
Caption EXCEL本体のタイトルバーの文字列
Visible EXCEL本体を表示/非表示
TOP,LEFT,WIDTH,HEIGHT EXCEL本体の位置や大きさを変更する
Workbooks
EXCEL 本体で開いている ブック(複数)のリスト

■Workbooks クラス
・Workbook クラスのコレクションクラス
・EXCEL を親ウインドウとして ブック(workbook)を複数開く事が出来るためそのリストクラス
・主なプロパティ、メソッドとして
Add 新たなブックを表示する
Open ブックを開く
Item Workbook を選択する
Application 親元の EXCEL

■Workbook クラス
・Workbook ブックのクラス
・主なプロパティ、メソッドとして
Save ブックを保存する
Application 親元の EXCEL
WorkSheets
 ブック内にあるシート(複数)のリスト

■WorkSheets クラス
・WorkSheet クラスのコレクションクラス
・主なプロパティ、メソッドとして
Add 新たなシートを作成する
Item WorkSheet を選択する
Application 親元の EXCEL

■WorkSheet クラス
・WorkSheet シートのクラス
・主なプロパティ、メソッドとして
Range 各セル単位のクラス
Application 親元の EXCEL



だいたいのEXCELクラスの位置づけ(雰囲気)はこんな感じ

■Application クラス
・EXCEL本体の親ウインドウ側のクラス
・主なプロパティとして
Caption EXCEL本体のタイトルバーの文字列
Visible EXCEL本体を表示/非表示
TOP,LEFT,WIDTH,HEIGHT EXCEL本体の位置や大きさを変更する
Workbooks
EXCEL 本体で開いている ブック(複数)のリスト

■Workbooks クラス
・Workbook クラスのコレクションクラス
・EXCEL を親ウインドウとして ブック(workbook)を複数開く事が出来るためそのリストクラス
・主なプロパティ、メソッドとして
Add 新たなブックを表示する
Open ブッ...続きを読む

QExcelがインストールされてない環境でのExcelインスタンス作成

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.ScreenUpdating = False
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Add
Set xlClone = xlApp.Workbooks.Open("C:\TEMPLATE.xls")
xlClone.Worksheets("Sheet1").Copy After:=xlBook.Sheets(1)

以上のようにVB上からExcelインスタンスを作成し
xlBookにxlCloneのシートをコピーしています。
作成した.exeをExcelがインストールされている環境では動作するのですがExcelがない環境ではエラーになってしまします。
ライブラリをおくなど、Officeをインストールしないで済む方法はありますでしょうか?VBにはExcel Object Liblalyが参照設定されてます。

Excelあり環境
Visual Basic6 SP6
WindowsXP SP2
Office2003 SP4

Excelなし環境
Windows Server2003 SP2

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.ScreenUpdating = False
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Add
Set xlClone = xlApp.Workbooks.Open("C:\TEMPLATE.xls")
xlClone.Worksheets("Sheet1").Copy After:=xlBook.Sheets(1)

以上のようにVB上からExcelインスタンスを作成し
xlBookにxlCloneのシートをコピーしています。
作成した.exeをExcelがインストールされている環境では動作するのですがExcelがない環境ではエラーになってしまし...続きを読む

Aベストアンサー

残念ですが無理だと思いますよ。

> CreateObject("Excel.Application")
は、「Excel(本体)を起動して操作する」機能ですから、
本体がなければどうしようも無いと思います。

> ライブラリをおくなど、Officeをインストールしないで済む方法はありますでしょうか

「Officeをインストールしないで済む」という条件だけ見れば、
「そういう機能を持つサードパーティ製の製品を買う」という方法もありますけど・・・

有名なのが「ExcelCreator」でしょうかね・・・
(http://www.adv.co.jp/products/product_ExcelCreator2007.htm)

Qマクロ Publicでの配列定義

Excelマクロで、Publicステートメントで配列を定義し、
プロシージャ内で配列要素を増やすことはできないのでしょうか?
下記ロジックで2つのMsbBoxが表示されるようにしたいです。
よろしくお願いします。

Public pubTMP
Sub test()
pubTMP(2,2)="aaa"
test222
Msgbox pubTMP(2,2)
Msgbox pubTMP(3,3)
End Sub

Sub test222()
pubTMP(3,3)="bbb"
End Sub

Aベストアンサー

これは変数のスコープの問題ではありません。

一度DimまたはRedimで定義した配列は
Redimで要素数を変更出来るのは最後尾にある次元の要素数だけです。
(Public pubTMP() の()付きで配列宣言しましょう)

上記の通り(2,2)から(3,3)へはRedim出来ません。
(2,2)から(2,3) 3次元配列だと(2,2,2)から(2,2,3)という具合です。

これらを踏まえると、必要なサイズ(1次元目の要素数)を何らかの方法で取得しておいて
初めのRedimで定義しましょう。2次元目の要素数は必要な時にRedimすれば良いでしょう。

i = 1次元目の必要なサイズ
Redim pubTMP(i,2)

2次元目の要素数を一つ上げる時
ReDim Preserve pubTMP(i, Ubound(pubTMP, 2) + 1)

どうしても1次元目を増やしたいんだ!という事であれば
配列に配列を格納するジャグ配列というものがあるので(使い方は難しいですけど)
興味があれば調べてみて下さい。うまくジャグ配列が使えればお望みの事は実現出来ます。

これは変数のスコープの問題ではありません。

一度DimまたはRedimで定義した配列は
Redimで要素数を変更出来るのは最後尾にある次元の要素数だけです。
(Public pubTMP() の()付きで配列宣言しましょう)

上記の通り(2,2)から(3,3)へはRedim出来ません。
(2,2)から(2,3) 3次元配列だと(2,2,2)から(2,2,3)という具合です。

これらを踏まえると、必要なサイズ(1次元目の要素数)を何らかの方法で取得しておいて
初めのRedimで定義しましょう。2次元目の要素数は必要な時にRedimすれば良いでしょう。

i = 1次元...続きを読む

QVB6では、Applicationは未定義なのでしょうか?

VB6を使ってプログラムを書いているのですが、以下のソースの部分で
エラーになりました。

Dim winname As String
winname = Application.Caption <-- Applicationが未定義? 

コンパイルエラー
変数が定義されていません。

というエラーメッセージが表示されます。

VB6では、Applicationは未定義なのでしょうか?

Aベストアンサー

インスタンスAppはありますが、Captionというプロパティは備えてないはず。
FormならCaptionありますね。
App.Pathとかで代用するとか。
詳しくはリファレンス(F1)をご覧下さい。

# Excel VBAからの移行?


このカテゴリの人気Q&Aランキング

おすすめ情報