Excel VBAで画像解析を行いたいのですが、その際に画像データを画素毎に抽出しなければなりません。bmpなど無圧縮のファイルなら、バイナリで読み込んで何とかなりますが、jpg等はどうにもなりません。

Excel VBAで画像ファイルの画素データを直接読み取る方法はありませんか。

他の開発言語を使ったほうがやりやすいのは承知の上ですが、解析結果も配列で返ってくるので、その後のグラフ化の処理などもExcel上で統合してやりたいのです。

宜しくお願いいたします。

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

A 回答 (1件)

実際には、やってないので当てずっぽうです。



まず、ユーザーフォームを作成。コンポーネントの「イメージ」を貼りつける。VBAでイメージのプロパティを操作して、jpgファイルを読み込み。同じくプロパティの.X .Yを指定して、RGB()値を取得。

で、どうでしょう

この回答への補足

回答ありがとうございます。
が、Imageコントロールのプロパティにはxやy、その他座標が指定できそうなプロパティが見当たりません。やはり無理なのでしょうか?

補足日時:2001/07/27 18:42
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Q添付画像のファイルはどんな状態のファイルなのでしょうか?クリってもエラ

添付画像のファイルはどんな状態のファイルなのでしょうか?クリってもエラーしか出た事がないのですが

Aベストアンサー

他の回答者様の記入通り、拡張子が無い事には判断出来ません。
また、クリックしてもエラーとありますが、webから探すとか出ませんか?
憶測ですが、多分質問者様のPCにこのファイルを開くアプリケーションが
インストールされていないのではないかな?って思います。
参考までに
よくありがちなのは、XPで作ったエクセルファイル等(逆だったかな^^;)を
ビスタのPCで見ると似たようなアイコンになります。
オフィスの互換パックをインストールすると見れます。

QEXCEL2000 VBAにおいてユーザフォーム上での入力チェック

ユーザフォーム上のテキストボックスに数字のみ入力するように制御したいのですが、英字が入力された場合、エラーメッセージを出した後、フォーカスをそのテキストボックスに戻したいのですが、うまくいかず、次のところにフォーカス移動してしまいます。どのようにすればいいか、ご教示願います。

Aベストアンサー

どのように、エラーメッセージを出しているのかわからないのですが(メッセージボックス?)、この部分でsetFocusがうまくいってないのかなと思います。
ご質問の内容と設計が異なりますが、初めから数字しか打てないようにしてはどうでしょう。

例です。
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case vbKey0, vbKey1, vbKey2, vbKey3, vbKey4, vbKey5, vbKey6, vbKey7, vbKey8, vbKey9
Case Else
KeyAscii = 0
End Select
End Sub

Q右クリで画像保存が出ない!

画像を取りたくて矢印を画像に置くと!手のマークに代わり!右クリができなくなりました。
どうしたらよいのでしょうか?

Aベストアンサー

最近のサイトでは著作権の問題もあり、勝手に保存ができないように右クリックができないように設定しいるところが多くなっているであります。法律に抵触する場合もあるであります。

方法としては、色々あるでありますが、ただ見えてる画像が欲しいのであれば、プリントスクリーンでPC画面全体をコピーして、ペイントソフトにペースト、余分な部分を削除して保存すればいいと思うであります。

プリントスクリーンはググってほしいであります。

QEXCEL2000とEXCEL2003のVBAについて

現在、EXCEL2000で下記のコードを実行しています。
が、EXCEL2003で実行すると、 .UsedRange.Copy myb
のコードが実行されているのにコピー出来ていません。

ファイルは開いていて、エラーは出ていないのです。
問題点わかる方教えていただけますか?


Sub 日別データ読込()

Dim rngsaki As Range
Dim pathmacrobook As String
Dim namebook As String
Dim motobook As Workbook
Dim myb As Variant

Set rngsaki = Workbooks("残高集計用.xls").Worksheets(3).Range("a2")
pathmacrobook = ThisWorkbook.Path & "\CSV読込データ12\"
namebook = Dir(pathmacrobook & "*.xls")

Do While Not namebook = ""


Set motobook = Workbooks.Open(pathmacrobook & namebook)
Set myb = Workbooks("残高集計用.xls").Worksheets(3).Range("A65536").End(xlUp)
With motobook.Worksheets("Sheet1")
.UsedRange.Copy myb
End With

motobook.Close False
namebook = Dir()

Loop

MsgBox "完了しました"
End Sub

現在、EXCEL2000で下記のコードを実行しています。
が、EXCEL2003で実行すると、 .UsedRange.Copy myb
のコードが実行されているのにコピー出来ていません。

ファイルは開いていて、エラーは出ていないのです。
問題点わかる方教えていただけますか?


Sub 日別データ読込()

Dim rngsaki As Range
Dim pathmacrobook As String
Dim namebook As String
Dim motobook As Workbook
Dim myb As Variant

Set rngsaki = Workbooks("残高集計用.xls").Worksheets(3).Range("a2")
pathmacrobook = T...続きを読む

Aベストアンサー

こんにちは。

まず、今回のマクロだけでは、

>Set rngsaki = Workbooks("残高集計用.xls").Worksheets(3).Range("a2")
これは、生きていないですね。

実際に試したわけではないのですが、バージョンによって違いが出るとも思えないですね。

.Worksheets("Sheet1").UsedRange.Copy

ただ、ここが気になりますね。空の場合は、「1セル」しかコピーしませんが、それを貼り付けても、無駄になってしまいます。
絶対に、空はないならよいのですが、本当は、
If WorksheetFunction.CountA(Worksheets("Sheet1").Cells) >0 Then
などで、シートを検査したほうがよいと思いますね。なお、必ず、Sheet1 というシートがあるという前提です。

それから、最後尾の次になるから、myb.Offset(1) でしょうね。
正しく動くかは分かりませんが、書き換えてみました。

Sub 日別データ読込R()
  Dim DestBook As Workbook
  Dim pathmacrobook As String
  Dim namebook As String
  Dim myb As Range
  
  pathmacrobook = ThisWorkbook.Path & "\CSV読込データ12\"
  
  Set DestBook = Workbooks("残高集計用.xls")
  namebook = Dir(pathmacrobook & "*.xls")
  
  Do While Not namebook = ""
    Set myb = DestBook.Worksheets(3).Range("A65536").End(xlUp)
    With Workbooks.Open(pathmacrobook & namebook)
       On Error Resume Next
        .Worksheets("Sheet1").UsedRange.Copy myb.Offset(1)
       On Error GoTo 0
       .Close False
    End With
    namebook = Dir()
  Loop
  Set DestBook = Nothing
  MsgBox "完了しました"
End Sub

こんにちは。

まず、今回のマクロだけでは、

>Set rngsaki = Workbooks("残高集計用.xls").Worksheets(3).Range("a2")
これは、生きていないですね。

実際に試したわけではないのですが、バージョンによって違いが出るとも思えないですね。

.Worksheets("Sheet1").UsedRange.Copy

ただ、ここが気になりますね。空の場合は、「1セル」しかコピーしませんが、それを貼り付けても、無駄になってしまいます。
絶対に、空はないならよいのですが、本当は、
If WorksheetFunction.CountA(Worksheets("...続きを読む

Q 友近さんの画像を探しています。本当にいい人で、美人で、セクシーだと思

 友近さんの画像を探しています。本当にいい人で、美人で、セクシーだと思います。着衣・水着・スカート、なんでもOKです(あまり小さいサイズじゃない方がよいです)。どうぞよろしくお願いします。

Aベストアンサー

こちらに数点ありました。
http://bsearch.goo.ne.jp/image.php?UI=web&TAB=web&STYPE=0&CC=1&SCRDEF=0&IMGST=0&IMGSZ=0&IMGC=3&IMGFT=0&IMGFT=1&IMGFT=2&IMGFT=3&MOVPT=0&MOVFT=0&MOVFT=1&MOVFT=2&MOVFT=3&AUDPT=0&NSDP=1&KWDP=1&DC=20&FR=1&SM=mc&OCR=1&SITE=&SITE2=&SITE3=&SITE4=&SITE5=&SITEH=&AUDST=0&AUDMST=0&MOVTHN=0&QGR=1&MOVSC=0&NOJSB=0&QGA=1&NOJS=0&AUDSITE=0&MT=%CD%A7%B6%E1&button=%B2%E8%C1%FC%B8%A1%BA%F7
画像を使用される場合は自己責任でお願いします。

Q画像データがbmpでしか保存できなくなった?

おはようございます。

東芝ダイナブックT5/X16PME
ウィンドウズXPホームエディション
I.E6.0です。

写真などの画像データをネット上から拾ってくるとき
写真のうえにマウスをあわせると
イメージツールバーが出て、
保存アイコンを選択すると、
自動的にその写真の「名前」と「種類(拡張子)」が表示され、
「保存」をクリックするとそれでおっけー・・・ですよね。

なのになぜか
jpgの写真を保存したくても、
bmpしか「種類」のバーにないんです。
あきらかに保存したいデータがjpgなのに。

そこで、名前を適当につけて、拡張子をjpgにすると、
そのデータがjpgとして保存できることを確認しました。

しかし
データの上にマウスをあわせ、
イメージツールバーの保存をクリックした時点の
状態で保存すると
「無題」のbmpデータとして保存されてしまいます。

これっておかしくないですか?
それともなんか勘違いしてますか?

わかんなくなっちゃいましたぁ。
詳しくご教授くださいませ。

よろしくお願いいたします。

おはようございます。

東芝ダイナブックT5/X16PME
ウィンドウズXPホームエディション
I.E6.0です。

写真などの画像データをネット上から拾ってくるとき
写真のうえにマウスをあわせると
イメージツールバーが出て、
保存アイコンを選択すると、
自動的にその写真の「名前」と「種類(拡張子)」が表示され、
「保存」をクリックするとそれでおっけー・・・ですよね。

なのになぜか
jpgの写真を保存したくても、
bmpしか「種類」のバーにないんです。
あきらかに保存したいデ...続きを読む

Aベストアンサー

1.「IE のキャッシュが壊れているから」が最も可能性が高いです。
  IE のキャッシュを、削除か、再構築してください。
  
削除は、
  IEのツール→インターネットオプションで
  全般タグの「ファイルの削除」をクリック
  「すべてのオフラインコンテンツを削除する」にチェックを入れます
再構築は、
  スタート→検索→ファイルやフォルダをクリック
  Temporary Internet Files を探し、そのサイズを調べる。
  次に、IEのツール→インターネットオプションの全般タグで
  「設定」をクリック
  ‘使用するディスク領域’を、先ほど調べたサイズより小さい値に変更する。
  適用をクリックするとキャッシャは再構築されるのでjpgファイルが
  正常に保存できる事があります。

2.画像ファイルのダウンロードが終わっていない
  JPGに限らず、GIFでも何でも、ダウンロードがまだ
  終わってない状態で画像の保存をしようとすると出てました。
  「更新」して問題を解決しました。

3.ウィンドウの開きすぎ
  ウィンドウの開きすぎが直接の原因とは考えにくいですが、
  沢山のウィンドウを開いた状態で画像の保存をしようとすると、問題がでました。
  おそらくリソースの不足だと思います。

4.ページによっては故意にJPEGでの保存をできなくしている所もあるそうです。

1.「IE のキャッシュが壊れているから」が最も可能性が高いです。
  IE のキャッシュを、削除か、再構築してください。
  
削除は、
  IEのツール→インターネットオプションで
  全般タグの「ファイルの削除」をクリック
  「すべてのオフラインコンテンツを削除する」にチェックを入れます
再構築は、
  スタート→検索→ファイルやフォルダをクリック
  Temporary Internet Files を探し、そのサイズを調べる。
  次に、IEのツール→インターネットオプションの全般タグで
  「設...続きを読む

Q●「美人アプリ」の画像を保存したい!

●「美人アプリ」というアプリを使用しています。

●ここで表示される画像を保存したいのですが、方法がわかりません。可能かどうかも。。

●もし、方法をご存知の方がいらっしゃいましたら教えていただけませんか?おねがいします。

Aベストアンサー

保存したい画像を表示させて、↓の方法で画面をキャプチャすると、写真アルバムから見れます。
http://blog.livedoor.jp/sakusakupocky/archives/50263981.html

Qexcel vba

マクロ中次のコードを入力したとき、コンパイルエラー
修正候補:区切り記号または)
というメッセージがでて赤文字でコードが表示され
カーソルが"A1".valueの.のところになりますが、原因がよくわかりません。
何か間違っていますか。

Workbooks("LOG-analysis-tool1.xls").xfile_Name1.Range("A1".value)=1+Workbooks("LOG-analysis-tool1.xls").xfile_Name1.Range("A1".value)

Aベストアンサー

間違いがいくつかありそうですねえ!!
xfile_Name1 は何ですか?
シート名ですか? ならば、

Workbooks("LOG-analysis-tool1.xls").SHEETS("xfile_Name1").Range("A1").VALUE= _
1+Workbooks("LOG-analysis-tool1.xls").SHEETS("xfile_Name1").Range("A1").VALUE

Q右クリ禁止のサイトの画像を保存

質問の通りなのですが右クリック禁止のサイトの画像を保存できるようにする方法はないでしょうか?あと、よく海外でおもしろ動画とかを見せてるサイトがありますが、そういった動画を保存する方法はありますか?重ねて質問すいません^^;

Aベストアンサー

そのサイトを見ないとなんとも言えませんが、
JAVAをオフにしてみると右クリック禁止がはずれる事もあります。

それで駄目ならば、プリントスクリーンを取って画像を修正してください。
まぁ画像を持ち出されたくないサイトならばあまり持ち出さないほうがよろしいかと思います。

ちなみに動画を保存する場合は専用のソフトなどが必要。

QExcel VBA SetFocus

環境:Excel 2002です

UserForm1での質問です
Flame5にTextBox14とTextBox15があります
TextBox14とTextBox15のBeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)後
Flame2にあるTextBox1にSetFocusしたいのですがエラーが発生します

実行時エラー 2147467259(800004005)

異なるFlameにSetFocusする方法があるのでしょうか?
Flame5の中でTextBox14及びTextBox15のSetFocusはできます

TextBox14とのTextBox15のBeforeUpdateのプロシージャです
Private Sub TextBox14_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

If Len(Me.TextBox14.Text) <> 0 Then

Dim a As Variant
a = 100 - Val(Me.TextBox14.Text)
Me.TextBox15.Text = a

Dim i As Integer
For i = 1 To 4
Me.Controls("TextBox" & i).Enabled = True
Me.Controls("TextBox" & i).BackColor = &H80000005 '背景色(白色)
Next i

End If

Me.TextBox1.SetFocus

End Sub

Private Sub TextBox15_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

If Len(Me.TextBox15.Text) <> 0 Then

Dim a As Variant
a = 100 - Val(Me.TextBox15.Text)
Me.TextBox14.Text = a

Dim i As Integer
For i = 1 To 4
Me.Controls("TextBox" & i).Enabled = True
Me.Controls("TextBox" & i).BackColor = &H80000005 '背景色(白色)
Next i

End If

UserForm1.TextBox1.SetFocus

End Sub

ご支援願います

環境:Excel 2002です

UserForm1での質問です
Flame5にTextBox14とTextBox15があります
TextBox14とTextBox15のBeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)後
Flame2にあるTextBox1にSetFocusしたいのですがエラーが発生します

実行時エラー 2147467259(800004005)

異なるFlameにSetFocusする方法があるのでしょうか?
Flame5の中でTextBox14及びTextBox15のSetFocusはできます

TextBox14とのTextBox15のBeforeUpdateのプロシージャです
Private Sub TextBox14_BeforeUpdate(ByVal Cancel As MSFor...続きを読む

Aベストアンサー

こちらでは解決しているようです。
http://www.moug.net/faq/viewtopic.php?t=65607

別解を。

質問者さんの図では、
フレームの本来の使い方(オプションボタン、チェックボックスなどの1個のみを選択する)をしていません。

見た目だけを、分かり易くグループ化しているのみです。

これなら、苦労してフレーム絡みのフォーカス移動を制御するより

ラベルを、フレームのように見せかけて
(SpecialEffect プロパティ を 3 に設定)
(テキストボックスは最前面に表示)
(見出し部分はラベルを重ねる) 等々

質問者さんのコードで動かすほうがずっと簡単かと思います。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング