
WindowsXPでAccess2002とExcel2002を使用しています。
AccessのフォームとレポートでExcelのシート内容を表示させたいと思いますが、OLEオブジェクトでそのまま挿入すると容量が大きくなりすぎます。そこで、過去の質問NO.605269のように、テーブルにExcelファイルのフルパスを格納するフィールドを1つ設け、そのパスをオブジェクトフレームコントロールのSourceDocプロパティに代入したのですが、うまくいきません。
連結オブジェクトフレームでは「OLEオブジェクトは空です」とメッセージが出てコントロールには何も表示されません。非連結オブジェクトフレームではどのレコードにも、最初にコントロールを設定したときに表示されるダイアログで指定したExcelファイルしか表示されません。
どうすればいいのか、アドバイスをお願いします。
No.2ベストアンサー
- 回答日時:
んーアクセスのヘルプを読むとSourceDocの正式な使い方は以下のような感じらしいのですが。
具体的なプロパティ名が分かっているなら、使い方はヘルプを読んだ方がはやいかと思いますよ。OLE1はエクセルファイル表示に置き換えて。
---
Sub Command1_Click
' クラス名を設定します。
OLE1.Class = "Excel.Sheet"
' オブジェクトの種類を指定します。
OLE1.OLETypeAllowed = acOLELinked
' OLE 元ファイルを指定します。
OLE1.SourceDoc = "C:\Excel\Oletext.xls"
' リンクするデータを指定します。
OLE1.SourceItem = "R1C1:R5C5"
' リンクされるオブジェクトを作成します。
OLE1.Action = acOLECreateLink
' コントロール サイズを調整します。
OLE1.SizeMode = acOLESizeZoom
End Sub
SourceDoc以外のプロパティも記述したら、表示できました!!
レポートも試してみます。
本当にありがとうございました(*^_^*)
No.1
- 回答日時:
もし本当に
>>最初にコントロールを設定したときに表示されるダイアログで指定したExcelファイルしか表示されません。
ここまでうまく出来ているのなら後はイベントの問題だけのような気がするのですが。どのタイミングでSourceDocに設定されているのでしょう?
例えばボタンをひとつつけてそのボタンクリックでコードを走らせたりするとどうなるんでしょうか。
この回答への補足
早速アドバイスありがとうございます。
フォームのレコード移動時のイベントに下記のように記述しました。
If IsNull(Me.エクセルファイルのパス名) Then
MsgBox "パス名が入力されていません"
Else
Me.エクセルファイル表示.SourceDoc = Me.エクセルファイルのパス名
End If
念のためにコマンドボタンを付けて、クリック時のイベントに同じコードを貼り付けてみましたが、結果は同じでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Accessのフォーム上にエクセルのシートを表示させたい!
Visual Basic(VBA)
-
Accessの連結・非連結オブジェクトフレーム
PowerPoint(パワーポイント)
-
OLEオブジェクトを自動でサイズ調整して枠内に収めたい
その他(データベース)
-
-
4
Accessのクエリでデータの入力ができません
Access(アクセス)
-
5
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
6
AccessのOLEオブジェクトについて
Access(アクセス)
-
7
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
8
AccessからOLEオブジェクト型のデータをエクスポートしたい。
その他(Microsoft Office)
-
9
エクセルをACCESSのレポートに変換する方法
その他(Microsoft Office)
-
10
どこにもフォーカスを当てたくない
Access(アクセス)
-
11
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
Excelを閉じるときVBAプロジェ...
-
アクセスVBAのMe!と[ ]
-
Excel2007 でのチェックボック...
-
日本語の文字化けを直す方法
-
GDIオブジェクトが増える……
-
【エクセル】複数のTextBoxに共...
-
エクセルのデータをwebフォーム...
-
txtNo,txtDate等の意味
-
現在アクティブになっているオ...
-
代入しているのになぜnullのま...
-
【エクセルのマクロ】クリップ...
-
ACCESSマクロ、Me![氏名] その...
-
文字列で小数点以下の0を削除し...
-
[C#] DataGridViewの項目名
-
ディスクの総セクタサイズを取...
-
PowerpointVBAで指定のShapeオ...
-
クリスタルレポートのプレビュ...
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
Accessのフォーム上にエクセル...
-
エクセルVBAでセル番地を指定し...
-
VBAで選択範囲外の図形(オブジ...
-
Excel VBAでマウスの左クリック...
-
Excel2007 でのチェックボック...
-
日本語の文字化けを直す方法
-
文字列で小数点以下の0を削除し...
-
VBでExcelの表形式の様なデザイ...
-
ExcelのシートをAccessで表示し...
-
PowerpointVBAで指定のShapeオ...
-
【エクセル】複数のTextBoxに共...
-
【エクセルのマクロ】クリップ...
-
GDIオブジェクトが増える……
-
現在アクティブになっているオ...
-
サブルーチンにオブジェクト名...
-
ビデオキャプチャについて
-
WebBrowser内のフォームをsubmi...
-
コードでオブジェクトを最前面に
おすすめ情報