Access2000:CreateControl関数のacImageについて

このQ&Aのポイント
  • Access2000のCreateControl関数のacImageを使ってイメージ(ウィンドウ)を動的に作成する方法についてご質問です。
  • 質問者さんはCreateControl関数のacImageを使用して、動的に作成したイメージに画像を貼り付けることができました。
  • しかし、VBAでこれらの画像のOLEサイズを変更することができないという問題に直面しています。
回答を見る
  • ベストアンサー

Access2000:CreateControl関数のacImageについて

CreateControl関数のacImageを使ってイメージ(ウィンドウ)を動的に作成し、そこにイメージを張ることはできたのですが、この画像のOLEサイズをVBAで変更することがどうしてもできません。 「Ctrl.Stretch = True」のような書き方をするのではないかと思うのですが・・・ ---------------------------------------------------------------- Dim tForm As Form Dim Ctrl As Control Set tForm = CreateForm() Set Ctrl = CreateControl(tForm.Name, acImage, , , "", 100, 100, 1500, 800) Ctrl.ストレッチする = True  ←この部分がわかりません。 Ctrl.Picture = "C:\image.JPG" ---------------------------------------------------------------- よろしくお願いします。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

コードにstopを入れておいて中断させ、ローカルウィンドウを表示させてメンバーを眺めると、SizeModeがそれらしいと思われます。「picture sizemode vba」で検索すると、参照URLがヒットしました。ご参考まで。 ただ、当方2000ですが、acOLESizeClip 以外は見るに堪えないんですがいかがでしょうか。 Sub test() Dim tForm As Form Dim Ctrl As Control Set tForm = CreateForm() Set Ctrl = CreateControl(tForm.Name, acImage, , , "", 100, 100, 1500, 800) Ctrl.SizeMode = acOLESizeStretch 'or acOLESizeZoom or acOLESizeClip(デフォルト) Ctrl.Picture = "C:\test.bmp" 'stop End Sub

参考URL:
http://msdn.microsoft.com/en-us/library/aa196588(office.11).aspx
yahooyaffo
質問者

お礼

ご回答ありがとうございました。解決致しました。 OLEサイズは3択なのでTrue/Falseではあり得ないと投稿直後に気づき、Ctrl.OLEsize=stretchとか当てずっぽうでやってみましたが当然ながらダメでした。 「コードにstopを入れておいて中断させ、ローカルウィンドウを表示させてメンバーを眺める」 恥ずかしながら、こんな便利なテクニックを今まで知りませんでした。 「acOLESizeClip 以外は見るに堪えないんですがいかがでしょうか。」 仰るとおりだと思います。しかし、その画像が入っているフォルダの中身がわかればいいという程度で考えております。 その画像をクリックすると、その画像が入っているフォルダ内のすべての画像がスライドショーのように表示されるというようなイメージです。画像のストレッチができなければ、サムネールを作成してイメージウィンドウに表示しようかと考えておりました。 この問題でまる1日悩んでおりました。感謝、感謝です。

関連するQ&A

  • ACCESSでフォームのフッターにボタンを作成

    こんにちは、VBAでアクセスについての 質問です。 フォームを作成し、 フッターにコマンドボタンを作成しようとしています。 コードは、 Set tForm = CreateForm() tForm.DefaultView = 1 tForm.Section(0).Visible = True tForm.Section(0).Height = 2000 tForm.Section(acFooter).Visible = True  ここでエラー2462が出る!! tForm.Section(acFooter).Height = 2000 ですが、エラー2462が出てしまいます。 解決方法を、ご教授願えますか? 宜しくお願いします。

  • アクセス イメージコントロールを新規に作りヘッダー

    アクセス イメージコントロールを新規に作りヘッダーに置くには? Private Sub test() Dim ctlText As Image Dim intLeft As Integer Dim intTOP As Integer Dim intWidth As Integer Dim intHeight As Integer DoCmd.OpenForm "フォーム1", acDesign intLeft = 567 * 1 intTOP = 567 * 1 intWidth = 567 * 1 intHeight = 567 * 1 Set ctlText = CreateControl("フォーム1", acImage, acHeader, intLeft, intTOP, intWidth, intHeight) End Sub これをやってるのですがエラーになります。 実行時エラー2148 「フォームまたはレポートのセクションを参照するときの値が正しくありません。」 と言うエラー内容です。 しかし、acHeaderをacDetailに変えるとエラーにならず、 詳細セクションにイメージを設置できます。 ヘッダーに置くにはどうすればいいですか?

  • フォームを作成してフォームビューで表示するには?

    Sub Sample01() Dim myForm As Form Set myForm = CreateForm DoCmd.RunCommand acCmdFormView End Sub vbaでフォームを作成し、フォームビューで作成したいのですが これだと何も起きないのですが、表示されるにはどうすればいいでしょうか?

  • VB6 ドラッグ&ドロップ

    Image1をPicture1(正方形)にドラッグ&ドロップするプログラム を作りたいと思っています。 このプログラムだとImage1全体がドラッグされるのではなく、 Image1の絵はその位置に残ってImage1の外枠だけがドラッグされてしまいます。 外枠だけでなくImage1の絵も一緒にドラッグできるようにするにはどうすればいいのでしょうか? また、このプログラムだとドロップする場所(Picture1_)以外で ドロップしてしまった場合でも画面上からImage1の絵と外枠が消えてしまいます。 ドロップする場所(Picture1_)以外でドロップしてしまった場合は、 Image1全体を画面上に残しておきたいのですがどうすればいいのでしょうか? Option Explicit Dim dx As Single, dy As Single Private Sub Form_Load() Image1.Picture = LoadPicture(App.Path & "picture.jpg") Image1.Stretch = True End Sub Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Source.Move X - dx, Y - dy End Sub Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Image1.Drag 1 dx = X: dy = Y 'マウスダウン位置 End Sub Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single) Source.Visible = False 'ドロップオブジェクトを非表示にする Picture1.BackColor = RGB(255, 255, 255) End Sub Private Sub Picture1_DragOver(Source As Control, X As Single, Y As Single, _ State As Integer) If State = 0 Then Picture1.BackColor = RGB(0, 0, 255) If State = 1 Then Picture1.BackColor = RGB(255, 255, 255) End Sub

  • ctrlキーを押しながらクリクリで画像を大きく

    jpgファイルをダブルクリックして開いたときは、 Microsoft Office Picture Managerで開かれ、 ctrlキーを押しながらマウスホイールをクリクリすると、画像が大きくなったり小さくなったりします。 アクセスのフォームにイメージコントロールを追加して、jpegファイルを表示した時は、 ctrlキーを押しながらマウスホイールをクリクリして大きくするのは無理なのでしょうか? ピクチャ全体表示:いいえ OLEサイズ:ズーム ピクチャタイプ:埋め込み にしています。プロパティを変えれば可能なら教えてください。 ご回答よろしくお願いします。

  • Access97でのエラー

    フォームを開くときに次のVBAを実行します。 Private Sub Form_Open(Cancel As Integer) Dim db As DAO.DATABASE Dim rs As DAO.Recordset Set db = CurrentDb ところが、Set db = CurrentDb の行で次のエラーが出ます。 実行時エラー '429' ActiveXコンポーネントはオブジェクトを作成できません。 ちなみに、これを作成したのは他のパソコンで、そのパソコンでは問題なく実行します。 Windows2000のパソコンにコピーして実行しようとするとダメです。 どなたかおわかりの方、いらっしゃいましたら、教えていただけないでしょうか?

  • Excel VBAによるコピー作業について

    お世話になります。初心者ですが、掲題の件、以下の通り質問させて下さい。 【環境】 ★イメージ列の各セルにほぼ収まる状態でイメージが貼りつけられた以下のExcelシートがあります。 ※項番:一部飛んでいます。 ※イメージ:一部張り付いていないセルがあります。 ================================= 項番 |イメージ ================================= 1 | ABC --------------------------------- 2 | A@ --------------------------------- 3 | --------------------------------- 4 | B* --------------------------------- 7 | CBA --------------------------------- 8 | HHH --------------------------------- 10 | YYY --------------------------------- 11 | --------------------------------- 12 | AAA --------------------------------- 15 | BBB ================================= 【VBAでの実行タスク】 ★上記Excel(仮称:test.xlsx)ファイル上の全イメージを個別に名前を付けて保存したい。 (001.jpeg,002.jpeg,003.jpeg,004.jpeg,007.jpeg,008.jpeg,010.jpeg,011.jpeg,012.jpeg,015.jpeg) ※保存先はローカルの適当な場所(例:C:\Users\test\Pictures) 【作成中のVBA】 --- Sub 画像保存() Dim sSavePath As String Dim gdipRet As GDIPlusStatusConstants Dim myStdPicture As StdPicture ActiveSheet.Shapes.Range(Array("Picture 1")).Select Application.Selection.CopyPicture Appearance:=xlScreen, Format:=xlBitmap Set myStdPicture = CreatePictureFromClipboard 'jpg保存するときはこの下の行を有効に(100ところを0~100に変更でクオリティ設定できる) gdipRet = SavePictureJpg(myStdPicture, "C:\Users\test\Pictures\001.jpg", 100) End Sub --- 【質問内容】 上記VBAですと、実行することで、001.jpgしか保存されない状況です。 1回のVBA実行で、1,2,3,4,7,8,10,11,12,15全てのイメージを個別に名前を付けて保存するには、 (001.jpeg,002.jpeg,003.jpeg,004.jpeg,007.jpeg,008.jpeg,010.jpeg,011.jpeg,012.jpeg,015.jpeg) VBAの記述をどう修正すべきかご教示頂きたく存じます。 何卒、宜しくお願い申し上げます。

  • アクセス 画像を更新したい

    フォーム1にイメージコントロールを置き ピクチャタイプをリンクにして、 ピクチャのパスを C:\Users\Desktop\無題.jpg のように指定してますが フォームが開いている最中に無題.jpgの中身が変わったら、 フォーム(イメージ)に表示する画像も更新させるvbaコードはありますか? 画像が更新→フォーム閉じてを開き直す と更新されますが、 Form_フォーム1.イメージ2.Requery としても何も起こらないし、エラーにもならないです。

  • access2003 自社カレンダーを作りたい

    現在、access2003で注文書を出力するプログラムを作成中です。 自社の営業日カレンダーを表示させたいのですが、 開く時のイベントプロシージャでエラーになって先に進みません。 エラーメッセージは 【イベントプロパティに指定した式 開く時でエラーが発生しました:プロシージャの宣言が、イベントまたはプロシージャの定義と一致していません。】です。 開発が初めてなので、どなたか教えていただけませんか?よろしくお願いします。   下記のイベントプロシージャの書き方に問題がありますか?  Function Form_Open(F As Form) Dim DB As DAO.Database Dim rs As DAO.Recordset Dim F As Form Set DB = CurrentDb Set F = Forms!カレンダA Set rs = DB.OpenRecordset("calen", dbOpenDynaset) End Function

  • アクセス2000VBA DAOをADOに書き換えてください

    アクセス2000VBA DAOをADOに書き換えてください 下記プログラムをADOに書き換えてください。(DAT1、DAT2はモジュールにて定義してあります) Option Compare Database Dim DBS As Database Dim QDF As QueryDef Dim RST As DAO.Recordset Dim COUNT1 Private Sub Form_Load() On Error Resume Next DAT2 = [Forms]![伝票]![HAKKOU1] Set DBS = CurrentDb Set QDF = DBS.QueryDefs("発行") With QDF .Parameters("DAT1") = DAT2 ’もしかしたら DAT2 ではエラーがでるかもしれません。 Set RST = .OpenRecordset() ’正しい記述を教えてください .Close End With With RST COUNT1 = !指示書 .Close End With

専門家に質問してみよう