• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB BitmapをExcelに貼り付け 大きさ)

VB BitmapをExcelに貼り付け 大きさ

このQ&Aのポイント
  • VB2005で、ビットマップをExcelに張り付けた後、そのビットマップの下端の次付近の適切な行に移動する方法を教えてください。
  • ビットマップをExcelに貼り付けた時に、貼り付けられた画像がビットマップの大きさよりも小さくなり、その結果不要な空行がたくさんできてしまいます。適切な場所を決める計算方法を教えてください。
  • VB2005でビットマップをExcelに貼り付ける際に、適切な行に移動するための計算方法を教えてください。貼り付けられた画像がビットマップの大きさよりも小さくなり、不要な空行ができてしまいます。

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

  • ベストアンサー
  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.1

13.5というのはピクセル数ではないのでは? ピクセル数が整数ではないのが何だか引っかかります。 おそらくポイント数ではないでしょうか? Windowsの場合、通常は、 13.5ポイント=13.5*96/72=18ピクセルです。

Galax01
質問者

お礼

親切なご回答いただきありがとうございます。 基本的なことを分かっておらず、大変お手数おかけしました。 おかげさまで上記の2つのうち2番目の現象を解消することができ、だいぶ状況はよくなりました。

Galax01
質問者

補足

一番目の問題は、用意していたExcelファイルの行の高さが13.5ポイントではなかった、というお恥ずかしい原因、と分かり、解決しました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル、比較、コピー、貼り付けのマクロ

    エクセルについて 同じシート内にあるB列2行目から66行目までとI列2行目から333行目までの セルを比較し、 B列2行目とI列2行目がおわったらB列2行目とI列3行目を比較という流れになる。 I列の比較が333行目まで終わったら、B列3行目とI列2行目を比較し、終わったらB列3行目とI列3行目を比較していきます。 同じ数値のセルがあったら (1)A列~E列(行は値が一致した行)をコピー (2)H列~L列(行は値が一致した行)をコピーし、 (1)はM列に貼り付け (2)はR列に貼り付け VBAのコードは以下の様になります Sub t() x = 2 y = 2 g = 1 n = 1 Do Do If Cells(x, 2) = Cells(y, 9) Then Range(Cells(x, 1), Cells(x, 5)).Copy Destination:=Cells(g, 13) Range(Cells(y, 8), Cells(y, 12)).Copy Destination:=Cells(n, 18) y = y + 1 g = g + 1 n = n + 1 Else y = y + 1 End If Loop While y < 334 Loop While x < 67 End Sub これを実行すると実行エラー1004 アプリケーション定義又はオブジェクト定義の エラーになります。誰か回答をお願いします。

  • エクセルで質問です!

    エクセルで質問です! オートフィルタをやって各項目ごとに合計を出そうと思い、下端の一行下のセルに合計を出したいのですが、項目ごとに行の数が違うため項目によっては合計が隠れてしまいます。 合計を下端に一行下ではなく五行くらい空けると合計は全部でるのですが見栄えが悪く仕事向きではありません。 なんとかして、全ての項目の合計が下端の一行下のセルに出せるやり方はありませんか?分かりづらい説明になってしまいましたが、教えてください。

  • 処理の繰り返しについて教えてください

    A列1行目の値をD列1行目にコピーし、E列でD列の文字列の右から3文字を返す。 そしてD列の下端までコピーの繰り返しD列の下端より1行下がりA列に戻る。 A列※行目の値をD列※行目にコピー・・・・。といった作業をD列の一番下のセル まで繰り返したいです。 さらにこの作業をブック内の左から数えて2個を除いた10個程度あるシートの すべてで反映させたいです。 下の感じで作ってみたのですが、繰り返し処理がイマイチよくわかりません。 ご指導のほどよろしくお願いします。 Cells(1, 1).Copy 'A列1行目の値をD列1行目にコピー(1) Cells(1, 4).PasteSpecial Paste:=xlValues ActiveCell.Offset(0, 1).Select 'E列でD列の文字列の右から3文字を返す(2) ActiveCell.FormulaR1C1 = "=right(RC[-1],3)" j = Cells(1, 4).End(xlDown).Row 'D列の下端を指定して For i = 1 To j Cells(1, 5).Copy 'D列の下端までコピーの繰り返し(3) Cells(i, 5).PasteSpecial Paste:=xlValues Next i ActiveCell.Offset(1, -4).Select 'D列の下端より1行下がりA列に戻る(4) Cells(※, 1).Copy 'A列※行目の値をD列※行目にコピー(6) Cells(※, 4).PasteSpecial Paste:=xlValues       A列          D列         E列 1  ****●▽■(1)    ****●▽■(2)      ●▽■(3) 2                  ****           ●▽■ 3    3                    *****      ●▽■ 4                 *****           ●▽■ 6   ****■▽■(5)    ****■▽■(6) 

  • エクセルのVBAでFor文がわかりません。

    エクセルのVBAでFor文をもちいてつぎのようなプログラムを作りたいと思っています。 まずSheet1に 一行目に時刻の一日のデータが1時間ごとにあり一時から24時までいかのようにあります。 1:00 2:00 3:00 ・・・ 24:00 二行目にその時刻におけるあるあたいが出力されます。  4  6  4 ・・・ 5 三行目はまた時刻で四行目は同様にそのときのある値が出力されています。 このような感じで31日分あります。 この一行目と二行目をコピーしてSheet2に行列を入れ替えて貼付 という作業を31回くりかえしたいのです。 ↓下にこんな感じで作りたいという形を作ったのですがどこかがおかしいので動きません。 修正とご指摘お願いいたします。 ------------------------ Sub Macro1() Dim x As Integer For x = 1 To 31 Sheet1.Range(Cells(2 * (x - 1) + 1, 1), Cells(2* (x - 1) + 4, 24)).Select Selection.Copy Sheets("Sheet2").Select Cells(24 * (x - 1) + 1, 1).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=True Next x End Sub --------------------

  • vb.netでExcelの1行をコピーしたい

    WindowsXP(SP2) VB2005 Excel2007で開発を行っております。 Excelの操作について質問したいことがあり、投稿しました。 Excelシートの横一列をセル単位に罫線で囲み、その行を必要な行数分どんどん下にコピーしたいのですが、コピーの部分で行き詰ってしまいました。 以下がコードです。 ' Excel用Objectの宣言 Public Shared xl As Excel.Application Public Shared xlBooks As Excel.Workbooks Public Shared xlBook As Excel.Workbook Public Shared xlSheets As Excel.Sheets Public Shared xlSheet As Excel.Worksheet Public Shared xlBorders As Excel.Borders Public Shared xlCells As Excel.Range ' ユーザID x = 1 y = 1 ' 罫線で囲む xlBorders = xlSheet.Range(xlSheet.Cells(y, x), xlSheet.Cells(y, x)).Borders xlBorders.LineStyle = Excel.XlLineStyle.xlContinuous System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBorders) xlBorders = Nothing ' 住所 x = 2 y = 1 ' 罫線で囲む xlBorders = xlSheet.Range(xlSheet.Cells(y, x), xlSheet.Cells(y, x)).Borders xlBorders.LineStyle = Excel.XlLineStyle.xlContinuous System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBorders) xlBorders = Nothing ' 氏名 x = 3 y = 1 ' 罫線で囲む xlBorders = xlSheet.Range(xlSheet.Cells(y, x), xlSheet.Cells(y, x)).Borders xlBorders.LineStyle = Excel.XlLineStyle.xlContinuous System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBorders) xlBorders = Nothing ' Tel x = 4 y = 1 ' 罫線で囲む xlBorders = xlSheet.Range(xlSheet.Cells(y, x), xlSheet.Cells(y, x)).Borders xlBorders.LineStyle = Excel.XlLineStyle.xlContinuous System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBorders) xlBorders = Nothing ' 備考 x = 5 y = 1 ' 罫線で囲む xlBorders = xlSheet.Range(xlSheet.Cells(y, x), xlSheet.Cells(y, x)).Borders xlBorders.LineStyle = Excel.XlLineStyle.xlContinuous System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBorders) xlBorders = Nothing Dim i As Int16 For i = 0 To 15 ' ここでコピーの処理を行う Next 以上がコードとなります。 どなたかご教授をよろしくお願いします。

  • エクセルで非表示行をうまくコピーする方法は?

     お世話になります。  エクセルで複数の項目についてデータ集計シートを作ってます。各項目の入力条件は一条件一行です。つまり一つの項目について複数行を使います。  項目毎に条件の数が違うので項目によって使う行数が異なります。  集めたデータはCSVに出力してアクセス等で分析、データベース化をしたいのですが、項目毎に行数が異なるということはCSVのフォーマットが変わってしまうということなので、最大条件数を有する項目の行数を確保して条件が少ない項目は下の方が空行になるようにします。  空行が多いと見づらいので空行は非表示にします。  ここからが問題で、このデータシートをテンプレート化し、不要な項目は削除、2回以上使うものは行を適宜挿入、コピペして使うことにしたいのですが、非表示にした部分がコピーされません。(非表示部分は下の方なので範囲指定からはずれてしまいます)  どうすれば良いでしょうか?  一度表示にしてコピペすれば問題ないのですが、入力作業は特定多数の人にお願いするので、あまり複雑な作業はさせたくありません。  はじめからアクセスを使えばいいじゃないかという意見もあろうかと思いますが、世の中アクセスを使いこなせる人ばかりじゃないので、入力作業はエクセルで手軽に・・・と考えています。  説明が長くなりましたがよろしくお願いします。

  • エクセルとVB6

    環境は OS XP Visual Basic 6 Excel 2003 です。 エクセルを扱うについては、今回初めてです。 ソースです----------------------------------- Dim ex As Object ' Excel.Application Dim wb As Object ' Excel.Workbook Dim ws As Object ' Excel.Worksheet Set ex = CreateObject("Excel.Application") ex.Visible = True 'エクセルを表示する Set wb = ex.Workbooks.Add '空白の新しいブックを追加 Set ws = wb.Worksheets.Add '新しいシートを追加 ws.Name = "XXX " 'シートの名前を設定 'シートのセルに書き込む '構文:Cells(行, 列).Value = 値 ws.Cells(1, 1).Value = "ID" ws.Cells(1, 2).Value = "PS" III% = 2 For x% = 0 To 135 III% = III% + 1 ws.Cells(1, III%).Value = 問D$(x%, 0) Next x% ----------------------------------- エクセルが起動し、挿入されます。 質問1 シート XXXはsheet3としてに挿入され、それ以外にsheet1 sheet2もできています。 これはなぜですか。 質問2 sheet1 sheet2を生成しないようにできますか。 できないようにするには、どうすればいいですか。 全くエクセルは詳しくありません。 お詳しい方、よろしくお願いします。

  • 散布図の元データを、変数で書けません。。。

    既に作ってある複数の散布図について、xの値とyの値を変数で書き直すマクロをどうやって作ったらよいものか、困り果てています。 既存のサンプルの元データは、マクロなど使っておらず、 =Sheet3!A5:A15 といった、ありふれた形式なのですが、このA5、A15を変数で可変にしたいのです。 置き換える変数は、本プログラムの中で行番号として、cells(i%,3)と いうふうに使ってきてました。 ActiveChart.SeriesCollection(1).XValues = Range(Cells(i%, 1), Cells(i%+10, 1)) (この前の行でi% = 5としている) としてみても、「'cells'メソッドは失敗しました」というエラーが返ってきてしまいます。 ちなみに使用エクセルは2003です。 よろしくお願い致します。。

  • エクセルの select case文

    Dim i For i = 1 To 5 Select Case Cells(i, "A") Case "午前" Range("w1").Select Selection.Copy  Cells(i, "C").Select ActiveSheet.Paste Case "午後" Range("x1").Select Selection.Copy Cells(i, "d").Select ActiveSheet.Paste  End Select Next i Dim j For j = 1 To 5 Select Case Cells(j, "A") Case "関東" Range("y1").Select Selection.Copy  Cells(j, "e").Select ActiveSheet.Paste Case "関西" Range("z1").Select Selection.Copy Cells(i, "F").Select ActiveSheet.Paste  End Select Next i 毎回皆様にはお世話になっています。 あるセルを参照してその入力結果により 違うセルを貼り付けるマクロを組みました。 参照するセルが複数個(この例だと2セル)あるので それぞれに変数を宣言してfor nextで まわしています。 この内容を変数ひとつだけで すっきりと記述することは可能でしょうか? 参照するセルや判別する内容が増えると 記述が膨大になって マクロが 見にくくなるので 良い方法がありましたら 御教授ねがいます。

  • VB5.0でカンマ区切りで編集した値をEXCELのシートに移送したい

    VB5.0でカンマ区切りで編集した文字型変数を、Excelのシートに移送したいのです。 1項目ずつなら xlSheet.Cells(Row, col) = 変数名 でよいと思うのですが、レスポンスの問題があり、カンマ区切りで複数行にわたり編集した変数を1行で、Excelシートに移送できないかと思っています。