• ベストアンサー

どなたか教えてください。

VB初心者です。 VBからExcelを操作したいのですが、VB上でExcelファイルを選択して開きたいんです。参考書には決まったExcelファイルを開くようなコードはあったんですが、その都度開くファイルが変わる場合というのがわからないんです。・・・・どうしたらいいのか見当がつきません。どなたか教えてください。

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

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

開くエクセルファイルを人間に選ばせるのなら コモン・ダイアログ・コントロールを使います。 1.「プロジェクト」→「コンポーネント」で「Microsoft Common Daialig Control」を追加します。 2.フォームにコモンダイアログを張りつけます。 3.実行時に「開くボタン」を押されたら、コモンダイアログを呼び出してファイル名を取得します。(詳しい使い方はヘルプを見てください。サンプルのソースも付いています) 4.取得したファイル名(=エクセルファイル)でエクセルファイルを開く。 という手順になります。

mmc820
質問者

お礼

遅くなりまして申し訳ありません。試行錯誤の結果、どうにか先へ進むことができました!!コモンダイアログ・・・便利ですね。ゴチャゴチャしていたフォームも見違えるようにすっきりです。どうもありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

VBAでテストしてますが、VBでも同じと 思います。Sheet1の代わりにForm上に ボタンを貼りつけてください。(今気がついて済みません) No1の方のご教示が既に出ています。これだけで目的のことが出来るようになりましたか。出来たのであれば、相当良く出きる方と思います 。であれば私のような素人が出る幕ではないのですが、もし滞っておられるなら、下記を参考にして、前へ進んでください。 私も手探りで、数十分いろいろ試して下記まで来ましたのですが。 下記ではエクセルを開くと、下記(13)になるようにするのは組みこんでいません。 (1)ワークシートを開き、メニューバーの余白で右クリック。 (2)VisualBasicツールバーが出る。 (3)金槌とスパナのアイコンをクリック。 (4)コントロールツールボックスのコマンドボタン(長方形)をクリック。 (5)ワークシート上で+が現われるが、マウスでこすって右下へ引っ張る。 (6)コントロールツールボックスの右下隅にある金槌とスパナのアイコンをクリック(デザインモードを解除すると消えるが驚かないで良い)。 (7)リストボックスの後半「M」の中の  「MicrosoftCommonDialogControl、Version6.0」をクリック。 (8)+をワークシート上でどこでもよいのでマウスでこすって右下へ引っ張る。 (9)コマンドボタンをダブルクリック。 (10)VBE画面になり Private Sub CommandButton1_Click() Endが出る。 (11)そこの中間に下記コーディングをいれる。 Private Sub CommandButton1_Click() CommonDialog1.ShowOpen fn = CommonDialog1.Filename MsgBox fn ' fs = Chr(34) & fn & Chr(34) ' MsgBox fs Workbooks.Open fn ActiveWorkbook.Activate End Sub (12)デザインモードをクリックして解除(三角定規の凹みをなくす) (13)シートのコマンドボタンをクリック。 (14)おなじみの「ファイル名を聞く」ウインドウが出るのでファイル(Book)名(.xls)を指定し、「開く」をクリック (15)指定したブックが開きシートがウインドウ画面に出る。 (注)開いたブックのシートの画面を最前面に持ってくるのが心もとない。

mmc820
質問者

お礼

お礼が遅くなりました。申し訳ありません。お二方からご意見をいただきまして、無事に課題をクリアできました。あともう一息でひとまず完成です。どうもありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

VBAでテストしてますが、VBでも同じと 思います。Sheet1の代わりにForm上に ボタンを貼りつけてください。(今気がついて済みません) No1の方のご教示が既に出ています。これだけで目的のことが出来るようになりましたか。出来たのであれば、相当良く出きる方と思います 。であれば私のような素人が出る幕ではないのですが、もし滞っておられるなら、下記を参考にして、前へ進んでください。 私も手探りで、数十分いろいろ試して下記まで来ましたのですが。 下記ではエクセルを開くと、下記(13)になるようにするのは組みこんでいません。 (1)ワークシートを開き、メニューバーの余白で右クリック。 (2)VisualBasicツールバーが出る。 (3)金槌とスパナのアイコンをクリック。 (4)コントロールツールボックスのコマンドボタン(長方形)をクリック。 (5)ワークシート上で+が現われるが、マウスでこすって右下へ引っ張る。 (6)コントロールツールボックスの右下隅にある金槌とスパナのアイコンをクリック(デザインモードを解除すると消えるが驚かないで良い)。 (7)リストボックスの後半「M」の中の  「MicrosoftCommonDialogControl、Version6.0」をクリック。 (8)+をワークシート上でどこでもよいのでマウスでこすって右下へ引っ張る。 (9)コマンドボタンをダブルクリック。 (10)VBE画面になり Private Sub CommandButton1_Click() Endが出る。 (11)そこの中間に下記コーディングをいれる。 Private Sub CommandButton1_Click() CommonDialog1.ShowOpen fn = CommonDialog1.Filename MsgBox fn ' fs = Chr(34) & fn & Chr(34) ' MsgBox fs Workbooks.Open fn ActiveWorkbook.Activate End Sub (12)デザインモードをクリックして解除(三角定規の凹みをなくす) (13)シートのコマンドボタンをクリック。 (14)おなじみの「ファイル名を聞く」ウインドウが出るのでファイル(Book)名(.xls)を指定し、「開く」をクリック (15)指定したブックが開きシートがウインドウ画面に出る。 (注)開いたブックのシートの画面を最前面に持ってくるのが心もとない。

関連するQ&A

  • ExcelマクロでVBエディタの自動化は出来ない?

    Excelのマクロで、VBエディタの操作を自動化したいと考えていますが、出来ないのでしょうか? マクロの記録では VBエディタの操作は一切記録されないようです。 バージョンは Excel2003 です。 具体的には、全てのマクロのコードをテキストファイルに吐き出したいと考えています。 ファイルメニューのエクスポートでも、コードウィンドウ1つ1つを "全てを選択" でも、Excelのマクロから実行させることは出来ないのでしょうか? よろしくお願いします。

  • エクセルのマクロボタンで指定場所にCSVで保存する

    Excel2007のマクロにより指定したシートをネットワーク上の指定フォルダにCSVファイルでボタンをワンクリックして保存したいと考えています。 多少エクセルVBの経験はありますが、初心者のため参考となるサンプルコードをさがしています。 目的は、MySQLデータペースとの連携です。元のエクセルファイルはネットで共有使用しており、他ユーザの操作負担を減らすことです。 他サイトや参考書のご紹介でも結構です。よろしくご指導ねがいます。

  • VB エクセルデータをロードする

    BVでエクセルデータをロードするにはどのようなコードがありますか、初心者のためどうしたらいいか分かりません。  よくVB.NETとゆう言葉が出てきますが、そちらを使用しないとできないものなのでしょうか、見当がつきません、どうか宜しくお願いします。

  • VB.NET EXCEL操作でのマクロ存在判定方法

    VB.NET(VS2005)でのEXCEL操作において、 そのEXCELファイルにマクロが含まれているかどうかを判断することは可能でしょうか? 何か方法があれば教えてください。 (指定したEXCELファイルを開いて印刷処理などをしたいのですが、  マクロがあるとエラーになったりと様々な問題が出てきます。  初めに、そのEXCELファイルにマクロがあるか判断し、  存在する場合は操作しないようにしたいと思っています。) どうぞよろしくおねがいします。

  • ExcelVBAでPowerPointの操作

    表題の件、質問いたします。 Excelの機能である、マクロ記録を使用して PowerPoint(PPT)を操作してみたが、コードが残っているのは Excelで操作した内容のみとなってしまいます。 ExcelVBAでPPTにExcelグラフの貼り付けや、テキストを追加したいのですが どうやったらよろしいんですか? 参考にコードを記載して頂けると助かります。 それでは、皆様宜しくお願い致します。 ※VBA初心者ですので、易しい内容でお願いします。。。

  • Excel2000での形式を指定しての貼り付け

    VB2005からExcel2000の新規ファイルへクリップボードにある値を貼り付けたいのですが、すべての値をテキスト形式(文字列?)で貼り付けたいのです。 貼り付ける値 コード    名称 001      hoge1 002      hoge2 貼り付けた後のExcelの見た目 コード    名称 1       hoge1 2       hoge2 上記のようになってしまうので、コードがExcel上では数値?扱いになってしまいます。Excel2007では、PasteSpecial(Format:="Unicode テキスト")でテキスト形式で貼り付けて問題はなかったのですが、Excel2000で同じ処理をすると、コードの001が1となってしまうのです。 Excel2000でExcel2007のようなPasteSpecial(Format:="Unicode テキスト")の貼り付けのやり方は、どのようなコードを記述すれば良いのでしょうか? 開発環境 OS:Windows XP SP2 VB:2005 Excel:2000

  • VB2005で、Excel 2010に罫線を描く。

    ※ VB2005で技術計算をし、[Excel 2010] に資料を作成しています。 ※ [Windows XP]+[Excel 2005] では正常に作動するコードを    [Windows 7]+[Excel 2010] 上のVB2005に移植すると、罫線の    描画部分でエラー表示が出ます。 ※ [Excel 2010] の Open コードは下記です。 ※ ファイルを開くコード    Me.Hide() xlApp = CreateObject("Excel.Application") xlBook = xlApp.workbooks.add xlSheet = xlBook.sheets("sheet1") xlBook.application.Visible = True Me.Show() MsgBox("Excelファイルは開きましたか", 0, "確認") Excel転記ToolStripMenuItem.Enabled = True ※ 何かの認識コードが不足しているのでしょうか。    教えて下さい。  

  • VBスクリプトでエクセルのセルに色をつける

    VBスクリプトを使って、あるエクセルファイルを開き、一行目に色をつけたいと思っています。なかなか良いサンプルコードが見つかりません。 どなたか参考になるサイトやコードを教えて頂けないでしょうか?

  • VB6.0で現在参照しているエクセルファイルの絶対パスを取得したい

    VB6.0で現在参照しているエクセルファイルの絶対パスを取得したい 環境:VB6.0/Excel2003/WindowsXP VB初心者です。 現在プログラム内で参照しているexcelファイルの絶対パスと、フォームのテキストボックスに入力された絶対パスを比較して、 それらが同一だった場合エラーを表示するというプログラムを作成しています。 プログラム内では、現在開かれているエクセルファイルの内容をチェックして、対象となるデータを持っているエクセルファイルを1つ選択し、データを取り込むという動きをしています。 現在開かれているファイルのパスと入力されたパスを比較する事は出来たのですが、 そうではなくデータを取り込んでいるエクセルファイルのみ比較したいのです。 (複数のファイルが開かれている場合、データを取り込んでいるファイルとは別のファイルのパスが入力されたファイルパスと同一だったときもエラーとなってしまうので..) データを取得しているところからはフルパスは取れそうにないので、ほかの方法を模索しています。 どうぞ宜しくお願い致します。

  • VB.NET Excelファイル読み込み

    VB初心者です。 VB.NETでExcelファイルを読み込みたいんですが、実行する端末にExcelがインストールされていなくても可能ですか? また、その読み込み方法を教えて頂きたいです。(もしくは参考サイト) お願いします><

専門家に質問してみよう