• ベストアンサー

MSHFlexGridコントロールについて

はじめまして。 WINXP,VB6.0,ACCESS2000で文書管理プログラムを作っています。 アクセスで作った下記のmdb形式のファイルを読みとり、vb6のフォーム上のMSHFlexGridコントロールに表示し、コントロール上の該当する行の部分をクリックすることによりPDFファイルを開けるようにと考えていますが、指定した行のPDFを開かせるための処理がわかりません。ご存じの方、よろしくお願いします。 mdbファイルの内容 ・資料区分 ・資料名 ・PDFファイルへのファイルパス

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

  • ベストアンサー
回答No.4

すみません 勘違いしてました すでにコード直書きだったら動作するんだったですね では途中で停めてみて変数Aの中身を確かめてみてはどうでしょう ?a="aaa.pdf" true なら 問題なしです  違ったらtrimしてみるとかですね trueでかつ起動しないなら問題は他の可能性ありです。

higuchi-yu
質問者

お礼

お手数をおかけして申し訳ありません。 変数の中身を確認したところFalseでした。。 色々試してみたいと思います。

higuchi-yu
質問者

補足

LEN関数で直接ファイル指定したものとクリックイベントで変数に入力したものの文字列を数えたところ異なりました。 アクセスのDBを確認したところ、入力していた文字列がおかしかった(1文字の漢字の真ん中にカーソルが置ける様な状態??)ので、打ち直したところ正常にファイルを開くことができました。 どうも長時間ありがとうございました。

その他の回答 (3)

回答No.3

Option Explicit Private Declare Function ShellExecute Lib "SHELL32" Alias "ShellExecuteA" (ByVal hWnd&, ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&) As Long Private Sub Command2_Click() Dim rc As Long Dim FName As String FName = "MusicBox.pdf" rc = ShellExecute(Me.hWnd, "Open", "C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe", FName, CurDir, 5) If rc = 2 Then Beep MsgBox "ファイルが存在しないか移動されています" End If End Sub これで動作確認できましたがどうでしょう?

higuchi-yu
質問者

お礼

たびたびすいません。 FName = "MusicBox.pdf"の様に直接ファイルを指定したら開くことが出来ました。 でも、 a = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, MSHFlexGrid1.Col) の様にクリックイベントで取得したファイル名を変数に入れて任意のファイルを開くようにしたいのですが、難しいでしょうか?

回答No.2

Option Explicit Private Sub Form_Load() MSFlexGrid1.Cols = 5 MSFlexGrid1.Rows = 5 MSFlexGrid1.TextMatrix(3, 4) = "kokodayo" End Sub Private Sub MSFlexGrid1_Click() Dim a As String Print MSFlexGrid1.Col, MSFlexGrid1.Row Label1.Caption = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Col) End Sub このようにクリックイベントでとれます 参考にどうぞ

higuchi-yu
質問者

お礼

何度もご回答頂き申し訳ありません。 ご指導頂いた内容を参考にしてコードを書いてみました。 クリックした部分を取り出し、変数aに入れてファイルを開こうと思っているのですが、ファイルがうまく開きません。  strFileName = "aaa.pdf" の様に直接ファイル名を入力すれば開けるのですが・・・ 何度も恐縮ですが、もし分かれば教えて頂けないでしょうか。 Private Sub MSHFlexGrid1_DblClick() Dim lngReturnCode As Long Dim strFileName As String Dim a As String a = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, MSHFlexGrid1.Col) ' ファイル名 strFileName = a ' 関連付けられたアプリケーションを開く lngReturnCode = ShellExecute(Me.hwnd, _ "open", _ strFileName, _ vbNullString, _ App.Path, _ SW_SHOWNORMAL) End Sub

回答No.1

ShellExecuteで開くことができるはずです。 これはWin API です http://homepage1.nifty.com/rucio/main/Samples/Sample051ShellEx.htm VisualBasic開発の参考になるサイト訪問してみてください。 http://ptacos.com

higuchi-yu
質問者

お礼

ご回答ありがとうございます。 ファイルを開く方法については理解しましたが、 MSHFlexGridコントロール上に表示されたmdbのレコードから 任意行の情報(PDFファイルへのファイルパス)を取り出す方法がわかりません。 引き続きよろしくお願いします。