過去のログの中からMSFlexGrid関係でのQ&Aを抜粋してます。よく似た項目別に、日付順で表示しています。
従って、同じ質問や回答が前後して重複している場合もあります。
貴重な時間を割いて回答して頂いておりますので無駄にせず、質問される前にぜひ目を通しておいて下さい。
MSFlexGrid過去のログ  (印刷関係)
No.0794 MSFlexGridの印刷方法  投稿者:penguin [99/11/04(木)10:06分]
  WindowsNT4.0とWindows98でVB6.0(SP3)を使っています。
  MSFlexGridを使って、PrintFormで印刷したところ印刷さ
  れた紙は真っ黒になってしまい、肝心のデータの部分が分
  かりません。
  画面には、きちんとデータが表示されているのになぜ、印
  刷をすると黒くなってしまうのでしょうか?
  正しく印刷するにはどのようにしたら良いのでしょうか。
No.1025 フレキシブルグリッド印刷について  投稿者:とし [00/3/22(水)9:22分]
  はじめまして、としと申します。VB5をはじめたばかりで助けてください。
  フレキシブルグリッドでセルにピクチャーを表示して、そのピクチャーごと印刷する方法を教えてください。
  ちなみに、PrintFormだとFormのハードコピーみたいに印刷できるのですが、Printer関数を使って印刷
  することは可能ですか?また、PrintFormを使っての印刷でFormを縦に印刷することは可能ですか?
  以上の件よろしくお願いします。
No.2209 MSFlexGridを印刷  投稿者:TAKE [01/6/04(月)17:05分]
  こんにちは。教えていただきたいのですが、
  MSFlexGrid表示された中身をそのまま印刷する事はできますか?

LOCATE 1, Y_GRT + 1
Printer.Print MSFlexGridの中身1
LOCATE 10, Y_GRT + 1
Printer.Print MSFlexGridの中身2

  と、いうようにやりたいのですが。
  よろしくおねがいします。
No.2212 RE:MSFlexGridを印刷  投稿者:花ちゃん [01/6/04(月)22:59分]
  MSFlexGridの中身1 とは個別のセルの中身と解釈していいのでしょうか
  だったらセルの番地を指定して
  Printer.Print MSFlexGrid1.Text
  詳しくは、ここのMSFlexGrid関係を見て下さい。
No.2575 MSFlexGridでの表計算形式での印刷  投稿者:ユタカ [01/8/04(土)0:05分]
  皆さん、初めまして。VBを始めたばかりのユタカと申します。今回、質問がありまして
  書き込みをさせて頂きました。VBレスキュー内での「データを表形式で印刷する」を
  参考にして、MSFlexGrid内を表計算形式で印刷しようとしているのですが
  うまく行かなく困っております。
   作成しておりますのは、列の方が3列で行の方が50行位の物で
  「データを表形式で印刷する」を参考にして見ても、最後の行のみしか
  印刷がなされません。
   「データを表形式で印刷する」を参考にとは、書いてある物の
  実際はただ、「'各個人データの印刷〜」から「Printer.EndDoc'印刷終了」の部分を
  貼り付けをしている状態です。根本的に間違っているとは思うのですが
  どこがおかしいのか、わからない状態です。もしよろしければ、識者の方々に
  アドバイス等を頂ければと思っております。         
  よろしくお願い致します。
No.2577 RE:MSFlexGridでの表計算形式での印刷  投稿者:花ちゃん [01/8/04(土)13:32分]
  この手の質問は、プログラムの記入間違いが起因していると思います。
  従って質問の内容では、どこが間違っているか判断できません。
  自分が間違っていると思う部分等のプログラムを載せて頂かないと
  判断できません。
No.2579 RE:RE:MSFlexGridでの表計算形式での印刷  投稿者:ユタカ [01/8/04(土)15:25分]
  花さん、お答えの方ありがとうございます。先日、「MSFlexGridでの表計算形式での印刷」について
  質問をさせて頂きました、ユタカと申します。前述の通り根本的に間違っていると思い
  恥ずかしく思い載せなかったのですが、いろいろやってみてもうまく行かず
  書かせて頂きました。このようにやっておりますと、必ずエラーが起こり
  印刷が出来ません。もしよろしければ、教えて頂ければと思っております。
  kamoku = 3
  ken = 3

   For i = 1 To ken
   MSFlexGrid1.Row = i
   MSFlexGrid1.Col = 1
   Printer.Print MSFlexGrid1.Text'時刻
   MSFlexGrid1.Col = 2
   Printer.Print MSFlexGrid1.Text'部門
   For j = 3 To kamoku + 2
   MSFlexGrid1.Col = j
   If j = 3 Then
   Printer.Print Tab(11 + (j - 1) * 8 + 1); MSFlexGrid1.Text'金額
   End If
   Next j
   Next i
  Printer.EndDoc '印刷終了
No.2580 RE:RE:MSFlexGridでの表計算形式での印刷 投稿者:花ちゃん [01/8/04(土)15:46分]
  載せておられるコードの部分ではエラーは発生しませが?
  印刷位置については希望の位置に印刷出来ているのかは
  定かでありませんが、一応エラーが無く印刷できます。

  エラーの発生場所・エラーの内容等を調べて見て下さい。
No.2581 MSFlexGridでの表計算形式での印刷    投稿者:ユタカ [01/8/05(日)15:52分]
  花さん、早速のお返事ありがとうございます。エラーの起きます場所は
  以下で、必ず同じ場所で起きてしまいます。

  MSFlexGrid1.Col = j
  実行時エラー"30010"
  列の値が不正です。

  と出てしまいます。また、グリッドの調整は次の様にしております。
  (この中で印刷をしたいと思っておりますのは、時刻、部門、金額となっております。)

  また印刷位置に付いてなのですが、エラーを回避(停止を押すと印刷が始ります。)
  一行毎にずれてしまいます。

  'グリッド調整
  MSFlexGrid1.TextMatrix(0, 0) = "日付": MSFlexGrid1.FixedAlignment(0) = 4: MSFlexGrid1.ColWidth(0) = 900
  MSFlexGrid1.TextMatrix(0, 1) = "時刻": MSFlexGrid1.FixedAlignment(1) = 4: MSFlexGrid1.ColWidth(1) = 1200
  MSFlexGrid1.TextMatrix(0, 2) = "部門": MSFlexGrid1.FixedAlignment(2) = 4: MSFlexGrid1.ColWidth(2) = 600
  MSFlexGrid1.TextMatrix(0, 3) = "金額": MSFlexGrid1.FixedAlignment(3) = 4: MSFlexGrid1.ColWidth(3) = 820

  当初から聞いてばかりで、大変申し訳ありません。解る限りいろいろなことを、やっているのですが
  一向にうまくいかなく・・・
No.2582 RE5:MSFlexGridでの表計算形式での印刷  投稿者:MIZO [01/8/05(日)20:44分]
  最初の質問に
  >作成しておりますのは、列の方が3列で行の方が50行位の物で
  とありますが・・・。
  3列しかないColに
  >For j = 3 To kamoku + 2
  > MSFlexGrid1.Col = j
  とやれば当然、j=4(若しくはj=3の時点)でエラーが発生します。
  もう一度、どの箇所を出力しようとしているのか確認された方が良いのでは?
No.2805 MSFlexGridが真っ黒に  投稿者:sin [01/9/21(金)11:54分]
   MSFlexGridを使って表を作り、その表を印刷する機能を付けたのですが
  MSFlexGridの部分だけが真っ黒になってしま
  います。
  似たようなプログラムと比べてもロジックやプロパティに問題はない思うのですが
No.2806 Re:MSFlexGridが真っ黒に  投稿者:ゆう(U) [01/9/21(金)13:50分]
  > MSFlexGridを使って表を作り、その表を印刷する機能を付けたのですが
  > MSFlexGridの部分だけが真っ黒になってしまいます。
  > 似たようなプログラムと比べてもロジックやプロパティに問題はないと
  > 思うのですが・・・
  「MSFlexGrid コントロール」には印刷機能がないので、貴方がどの様に
  印刷機能を加えているかわからないと回答のしようがありません。

  現在の状態で、印刷時に真っ黒くなるという事は白地に黒で印刷され
  ているということですね?

  真っ黒くなる場合を想定すると、「Line メソッド」でBFオプション
  をしている・・・くらいしか思いつきません。

  現在の印刷部分(方法)を詳しく説明してみてください。
No.2809 続MSFlexGridが真っ黒に  投稿者:sin [01/9/21(金)18:36分]
   すみません、説明不足でした。
  Private Sub cbprint_Click()
  Dim BeginPage, EndPage, NumCopies, Orientation, i As Long
   On Error GoTo ErrHandler
   With frmMain
   ' [印刷] ダイアログボックスを表示します。
   .CommonDialog1.ShowPrinter
   BeginPage = .CommonDialog1.FromPage
   EndPage = .CommonDialog1.ToPage
   NumCopies = .CommonDialog1.Copies
   Orientation = .CommonDialog1.Orientation
   For i = 1 To NumCopies
   ' データをプリンターに送信するコードを記述します。
   frmMultiplySup.PrintForm
   Next
   End With
   Exit Sub
  ErrHandler:
   Exit Sub
  End Sub
  こんな感じでプリンターに送っています。
No.2810 Re:続MSFlexGridが真っ黒に  投稿者:ゆう(U) [01/9/21(金)21:08分]
  > ' データをプリンターに送信するコードを記述します。
  > frmMultiplySup.PrintForm
  > :
  > こんな感じでプリンターに送っています。

  「PrintForm メソッド」でしたか・・・

  ヘルプに
  『実行時に Form オブジェクトやピクチャーボックス (PictureBox) コントロールに
   追加されたピクチャーが描画されたときに AutoRedraw プロパティが真 (True) に
   なっている場合は、そのピクチャーを印刷します。
   ActiveX コントロールの出力結果は、
  各コントロールのインプリメントに依存します。』
   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  とありますので・・・

  「MSFlexGrid コントロール」では印刷されないのかもしれません。

  もしそういう理由であれば、PictureBoxへhDCを使用し、MSFlexGridの表示内容を
  写しPictureBoxに描画された内容として印刷させるとOKでしょう。
  ※現在、印刷テストが出来ないので何らかの方法があるかは
   確認できません(MSFlexGridのまま)
No.2812 Re:続MSFlexGridが真っ黒に  投稿者:ゆう(U) [01/9/22(土)10:12分]
  > ※現在、印刷テストが出来ないので何らかの方法があるかは
  >  確認できません(MSFlexGridのまま)
  「ReDraw プロパティ」で何とかならないかと思ったんですが・・・
  真っ黒ですね。

  > もしそういう理由であれば、PictureBoxへhDCを使用し、MSFlexGridの表示内容を
  > 写しPictureBoxに描画された内容として印刷させるとOKでしょう。
  「MSFlexGrid コントロール」のhWndからhDCを取得し、表示内容を
  コピーするコードを試したのですが、固定行・列などや薄い罫線部分  
  が表示されない状態です・・・
  ※時間をかけて動作を検証すると解決するかもしれません

  代案として・・・
  フォームに表示されている全てのコントロールの絵をフォームに
  直接描画し、PrintFormでは全てのコントロールを見せない状態
  で印刷するのはいかがでしょう。
  ※非表示にする際フォーカスの移動イベントが発生するので
   フォーカスがらみで修正が必要かも

  サンプル)
  Private Declare Function GetDC Lib "user32" _
   (ByVal hWnd As Long) As Long
  Private Declare Function ReleaseDC Lib "user32" _
   (ByVal hWnd As Long, _
   ByVal hDC As Long) As Long
  Private Declare Function BitBlt Lib "gdi32" _
   (ByVal hDestDC As Long, _
   ByVal X As Long, _
   ByVal Y As Long, _
   ByVal nWidth As Long, _
   ByVal nHeight As Long, _
   ByVal hSrcDC As Long, _
   ByVal xSrc As Long, _
   ByVal ySrc As Long, _
  ByVal dwRop As Long) As Long
  Private Sub Command1_Click()
  Const SRCCOPY = &HCC0020
  Dim myDC As Long
   Dim lngResult As Long
   Dim myControl As Control
  Dim blnVisible() As Boolean
  Dim i As Long
  On Error Resume Next 'Visibleプロパティを持たないコントロール用

  With Me
  myDC = GetDC(.hWnd)
  .AutoRedraw = True
   .Cls
   .ScaleMode = vbPixels
  lngResult = BitBlt(.hDC, .ScaleLeft, .ScaleTop, .ScaleWidth, _
   .ScaleHeight, myDC, .ScaleLeft, .ScaleTop, SRCCOPY)
   lngResult = ReleaseDC(.hWnd, myDC)
   End With

   ReDim blnVisible(0 To Me.Controls.Count - 1)
  For Each myControl In Me.Controls
  blnVisible(i) = myControl.Visible
  myControl.Visible = False
  i = i + 1&
   Next

  Me.PrintForm

  i = 0&
   For Each myControl In Me.Controls
  If blnVisible(i) then
  myControl.Visible = True
  End If
  i = i + 1&
  Next
  End Sub
  ※コメントは特に書きませんので、動作を見ながら検証してみてください
No.4294 フレックスグリッドを印刷  投稿者:GARU [02/4/09(火)0:41分]
  こんばんは。
  フレックスグリッドに表示したデータを表の形のまま印刷する方法はあるでしょうか?
  どなたかご教授していただけないでしょうか。
No.4296 RE:フレックスグリッドを印刷  投稿者:花ちゃん [02/4/09(火)0:55分]
  ここの(左のフレームのメニュー)MSFlexGrid関係をご覧になっていないなら
  一度目を通して下さい。
No.4306 RE:フレックスグリッドを印刷  投稿者:GARU [02/4/09(火)10:49分]
  ご返答ありがとうございます。言葉足らずでご迷惑おかけしました。
  グリッドのセル色など見たままに印刷したいので、以下のようにしました。
  FrmPrnt.Picture = fgrid.Picture
  frmPrnt.PrintForm
  グリッドを印刷用のフォームに一度写して、プリントフォームで印刷したのですが、
  現在、用紙の大きさまでしかグリッドの内容が印刷されません(用紙の終端まで行くと 
  印刷も終了してしまいます)
  プリントフォームを使って用紙複数枚にわたって印刷するにはどうすればよいでしょうか?
MSFlexGrid過去のログ  (入出力関係)
No.0944 MSFlexGridにデータを読み込みたい  投稿者:クリリン [00/1/25(火)8:17分]

  初めまして、クリリンといいます。今仕事で初めてデータベースを使っているのですが、 
 MSFlexGridにデータベースからデータを読み込んで、ある特定のセルだけ書き換えれるように
 したいのですがやり方がわかりません。データベースは、下記のようにSQL構文を使って,
 "nmc3.mdb"という名前のデータベースの、Banngouというフィールドの数字を元に(1から18) 、
 データを呼び出そうとしているのですがエラーがでます。
  basho=App.Path
 Set ws=DBEngine.Workspaces(0)
 Set db = ws.OpenDatabase(basho &"\" & "nmc3.mdb")
  for i=1 to 18
 Set qu = db.CreateQueryDef("")
 qu.SQL ="SELECT *FROM sys_nam" &"WHERE Banngou=Str(i)"
 Setrs = qu.OopenRecordset

  また、MSFlexGridにて3列目から6列目だけを書き込み可能にして、頬化のところは、
   できれば、移動できないようにしたいのですが、それは可能でしょうか。

  初めての投稿なので、わかりにくい文かもしれませんが、超初心者の私にいいアドバイスをお願いします。
No.0950 Re:MSFlexGridにデータを読み込みたい    投稿者:タカ [00/1/28(金)10:44分]
  もう解決されてるかもしれませんが...
  1.「MSFlexGridで移動しない項目を作りたい」→MSFlexGridのFixedColsプロパティはどうでしょうか?
  2.「データを呼び出そうとしているのですがエラーがでます。」→ソースのどこでエラーがでるのでしょうか?
 「sys_nam」がテーブル名ですか?
  qu.SQL ="SELECT *FROM sys_nam" &"WHERE Banngou=Str(i)"
  ↓
  Banngouが数値項目なら
  qu.SQL ="SELECT * FROM sys_nam WHERE Banngou=" & i
  Banngouが文字項目なら
  qu.SQL ="SELECT * FROM sys_nam WHERE Banngou='" & i & "'"
  にしてみてはどうでしょうか?
No.3557 MSFlexGridにて・・・  投稿者:ケンシロウ [02/1/08(火)15:48分]
  MSFlexGridをCSVファイルに書き込みたいのですが
  よい方法を教えていただけませんか?
  お願いします!
No.3559 Re:MSFlexGridにて・・・  投稿者:ゆう(U) [02/1/08(火)17:05分]
  > MSFlexGridをCSVファイルに書き込みたいのですが
  > よい方法を教えていただけませんか?
  簡単な方法なら・・・

  「Clip プロパティ」で全てのセルをまとめて
  取得し、「Replace 関数」で特定のコードを
  変換し、「Print # ステートメント」で
  出力してしまう・・・
 ※「Replace 関数」はVB6.0からの新関数です
  確実なのは・・・
  一行単位でセルの内容を確認しながら、
  「Print # ステートメント」で出力
  していく。
  ※ここのサンプルにもあったような
No.3560 Re:MSFlexGridにて  投稿者:花ちゃん [02/1/08(火)18:00分]
  >一行単位でセルの内容を確認しながら、
  >「Print # ステートメント」で出力
  >していく。
  >※ここのサンプルにもあったような

  MSFlexGrid 関係の テキストファイルを読込、表示、保管する(No.2) です
No.4291 SQL実行結果をフレックスグリッドに表示する際に 投稿者:TOMO [02/4/08(月)23:28分]
  質問させていただきます。
  VB上からSQLを使用してmdbファイル内の値を変更するのですが、
  変更した直後にmdbファイルの内容をMSフレックスグリッドに表示するのですが、
  mdbファイルの内容は変更されているのですが、グリッド上では変更が反映されません。
  10秒ぐらい待ってからグリッドをリフレッシュすると反映されます。
  すぐにグリッドに変更を表示したいのですが、何かよい方法はないでしょうか?
MSFlexGrid過去のログ  (その他)
No.2615 MSGridコントロールが使えない  投稿者:たーくん [01/8/13(月)11:18分]
  当方Win2000でVB5.0SP3を使っているのですが、
  MSFlexGridコントロールを使おうとすると、
  「必要なコンポーネントがインストールされていない」旨の
  エラーが出ます。
  6.0でないと使えないんでしょうか?
No.2959 MSFlexGrid  投稿者:匿名 [01/10/19(金)13:18分]
  VBの無料版(VB5CCE)を使っているのですが
  MSFlexGridは使うことができないのでしょうか?
  また使えるとしたらどうやって使うのでしょうか?
  初心者の質問に答えてやって下さい。
  よろしくお願いします。
No.2962 RE:MSFlexGrid    投稿者:NAO★ [01/10/19(金)20:16分]
  ちょっと前のバージョンの情報なので変わっているかもしれませんが、
  VB5CCEだと次のコンポーネントしか使えないようなので、
  現在のバージョンでもMSFlexGridは使えないかもしれません。

  Visual Basic 5.0 Control Creation Edition
  The following ActiveX components ship in this edition:

  ComCtl32.ocx Microsoft Windows Common Controls 5.0

v.5.00.3828 Feb. 28, 1997 597,264 bytes
ImageList
ListView
ProgressBar
Slider
Status Bar
TabStrip
Toolbar
TreeView

  ComDlg32.ocx Microsoft Common Dialog Control 5.0

v.5.00.3714 Feb. 27, 1997 128,784 bytes
CommonDialog
No.2985 FlexGridとは?  投稿者:ちゃぶ [01/10/25(木)16:33分]
  初めて投稿します。VB6.0を使いはじめて1週間の初心者です。
  教えてください。
  "MSFlexGrid"とは、なんですか?
  何をどこからどう調べていいのか考えあぐねています。
  よろしくお願いします。
No.2990 RE:MSFlexGrid  投稿者:NAO★ [01/10/26(金)11:12分]
  MSFlexGrid はその名前の通り
  「マイクロソフトが開発した(MS)フレキシブルな(Flexible 柔軟性のある)
  格子(Grid)状のコントロール」です(^^;;

  まあExcelみたいな表を作るのに使うものです。
  VBからExcelを操作することも可能ですが、すべての人がExcelを持っているわけではないので
  配布するソフトなどにはこちらを使うこともあります

  欠点はマウスでセルをクリックして直接入力という機能をもって無いので
  プログラム上で工夫する必要があります。(ここのHPにもやり方がかいてあります)

  ヘルプ(MSDNライブラリ)が参考になりますので調べてみてください
  ・プログラミングガイド
  ・VisualBasicを使って出来ること
  ・VisualBasic標準コントロールの使用
  ・階層フレキシブルグリッド
  の順で目次をたどっていけばたどり着けると思います。
No.3820 MSCHARTとMSFlexGridのコントロールについて  投稿者:匿名 [02/2/09(土)21:38分]
  とても基本的なことなのですがよろしくお願いします。
  MSCHARTを使いたいのですが、オブジェクト一覧を探したところありません。
  また、MSFlexGridも使いたいのですが、オブジェクト一覧にはあったのですが、
  使おうとすると「ライセンスが取得されてないか・・・・」というメッセージが
  でます。
  使っているバージョンは「VB5.0(ラーニング)」です。
  このバージョンでは使用できないのでしょうか?
No.3822 RE:MSCHARTとMSFlexGridのコントロールについて 投稿者:NAO★ [02/2/10(日)2:22分]
  MSChart はLearning Editionでは対象外です。
  MSFlexGridは使えるはずですが、どこでそのメッセージが出るのでしょう
  [プロジェクト]→[コンポーネント]で指定したときですか?
  それともそのあと、実際にコントロールを配置したあとですか?
No.3823 MSCHARTとMSFlexGridのコントロールについて 投稿者:匿名 [02/2/10(日)11:01分]
  NAOさんありがとうございます。
  MSFlexGridについては、実際コントロールを配置したときです。
  よろしくお願いします。
No.3824 RE:MSCHARTとMSFlexGridのコントロールについて 投稿者:NAO★ [02/2/10(日)13:48分]
  ん〜何でしょうね?(^^;
  もしサンプルも一緒にインストールしているなら
  \VB\Samples\Pguide\MSFlexGD\Flex.vbp
  というファイルがあると思うので読み込み&実行できるか試してみてください。
  できなければ再インストールかなぁ
No.3825 RE:MSchartとMSFlexGridのコントロールについて 投稿者:花ちゃん [02/2/10(日)19:48分]
  私も、Win98 でVB5 を使っているので同様の経験がるのですが
  ライセンス情報が書き込まれない場合の対処方法
  フォーム上に Visual Basic 5.0 付属のコントロールを配置しようとしたときに、
  「このコンポーネントのライセンス情報が見つかりません。デザイン環境でこの機能を使うために
  必要なライセンスがありません。」と表示される場合があります。
  http://www.microsoft.com/japan/support/kb/articles/J040/9/61.asp
  これに該当しませんか?
No.4393 MSFlexGridの最大行数について。  投稿者:ゆうや [02/4/15(月)22:15分]
  こんばんは。わからないことがあるので投稿してみました。
  VB6.0 SP5を使っています。
  MSFlexGridコントロールの行数のみを事あるごとに増やしています。まだ作成途中なのですが、
  行数ってどこまで増やしてもいいものなのか?と疑問に思いました。
  String型の変数は2GBまで?とかの制限があると思ったのでコントロールにもあるのかなと思いました。
  どなたかご存知の方、教えていただけないでしょうか。宜しくお願いします。
No.4394 RE:MSFlexGridの最大行数について。  投稿者:NAO★ [02/4/15(月)22:48分]
  Longの正の最大値以内(2,147,483,647)なら指定できますが
  メモリやシステムリソースの制約を受けるかもしれませんね。
  とりあえずウチでは4万件までは試したこと在りますが
  遅い以外は問題なさそうです。



2002/05/04