こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

vb→access コーディングエラーについて

<環境>access2007

vbコーディングした以下のコードをaccessに移行しているのですが、宣言で"Excel.~"となっているところでコンパイルエラーとなります。
(エラー:ユーザー定義型は定義されていません。)
なので、全てObject型に変えたのですが、
(1)objBook.Names.Countで件数が取れないし、
(2)For Each objName In objBook.Namesで名前も取れません。

accessで動くようにどう直せばいいのでしょうか?
よろしくお願いします。

<vbコード>
Dim XLAPP As Excel.Application→Objectに変更
Dim objBook As Excel.Workbook→Objectに変更
Dim objName As Excel.Name →Objectに変更
Dim objTable As Excel.Range→Objectに変更
Dim objRange As Excel.Range→Objectに変更
Dim objColumn As Excel.Range→Objectに変更
Dim objRow As Excel.Range→Objectに変更
Dim i As Integer
Dim lngCountSheet As Long

Set XLAPP = CreateObject("Excel.Application")
Set objBook = XLAPP.Workbooks.Open(FileName)

objBook.Application.DisplayAlerts = False
lngCountSheet = objBook.Names.Count (1)←ここ

For Each objName In objBook.Names(2)←ここ
Set objTable = objName.RefersToRange
With objTable
For i = 1 To .Columns.Count
Set objColumn = .Columns(i)
objColumn.HorizontalAlignment = XlHAlign.xlHAlignLeft
Set objColumn = Nothing
Next i
'先頭行の書式設定をします
Set objRow = .Rows(1)
objRow.Interior.Color = RGB(192, 192, 192)
' .Range("A2").Activate
'' ActiveWindow.FreezePanes = True
' XLAPP.ActiveWindow.FreezePanes = True
End With
Next
XLAPP.Quit

投稿日時 - 2013-03-07 19:39:07

QNo.7981506

すぐに回答ほしいです

質問者が選んだベストアンサー

> objBook.Names
ヘルプには、
『指定されたブックのすべての名前 (すべてのワークシートの名前を含む) を表す Names コレクションを返します。値の取得のみ可能です。Names コレクション オブジェクトを使用します』
とあります。
さらに使用例も載っています。
objBook.Names は名前の定義で作成した名前のコレクションです。
ブックの名前のことではありません。
http://officetanaka.net/excel/vba/file/file04.htm
具体的な添削回答はいたしません。

投稿日時 - 2013-03-08 15:46:15

お礼

For Each objName In objBook.Names
のところが解決できずでしたが、別の方法で解決できました。
ありがとうございました。

投稿日時 - 2013-03-11 14:21:11

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>宣言で"Excel.~"となっているところでコンパイルエラー
VBE で、ツール→参照設定で
Microsoft Excel X.X Object Library にチェックを入れてください。
X.X は環境によって変わります。たぶん12.0。

そうすればインテリセンスなどが働きますので、楽できますし
XlHAlign などのExcelの定数もそのまま使えます。

投稿日時 - 2013-03-08 10:21:50

補足

いつもありがとうございます。
参照設定を変えることでコンパイルエラーはなくなりました。
ただ、もう1点教えてください。
>lngCountSheet = objBook.Names.Count (1)←ここ
のところで0件となってしまします。
Set objBook = XLAPP.Workbooks.Open("D:\aaa.xls")
の件数ですので、1件となる気がするのですが0件となるのはどうしてでしょうか?
その為、
For Each objName In objBook.Names
で中の処理に入らず抜けてしまいます。

投稿日時 - 2013-03-08 13:34:15

あなたにオススメの質問