• ベストアンサー

VBからEXCELを保存

VBからEXCELに保存したいのですが、前準備としてEXCELのsheet2で保存します。VBを実行したときにExcelのsheet1に保存したいのですが、どうすればいいかわかりません、おしえてください。多分、保存するときにSheet2を対象にしていると思うので、sheet1を対象にしたいのですが・・・ /****************** VBを実行したときの処理 ********************/ 'アプリケーションの参照 Set xlApp = CreateObject("Excel.Application") 'ブックの参照 Set xlBook = xlApp.Workbooks.Open("C:\テスト\テスト.Xls") 'シートの参照 Set xlSheet = xlBook.Worksheets("Sheet1")

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

  • ベストアンサー
  • baboooo
  • ベストアンサー率35% (17/48)
回答No.2

質問の意味がいまいちわからないのですが、 sheet1をアクティブにして保存するということでよいのですか? こんな感じ↓ 'Excelシートの1番目をアクティブに設定 xlApp.Worksheets(1).Activate '変更を保存して対象Bookのみを閉じる xlApp.Application.ActiveWindow.Close SaveChanges:=True

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 いまいち状況がわからないので、質問します。 1.何を保存したいのでしょうか。 VBのフォーム上のテキストボックスなどにユーザーが入力した値でしょうか。 それとも、別のExcelファイルの内容でしょうか。 2.どこに保存したいのでしょうか。 テスト.xlsファイルの「Sheet1」ですか。 3.「Sheet2」はどういう関係があるのでしょうか。 Sheet2のデータをSheet1に保存したいのですか。 Sheet2にも同じデータを保存したいのでしょうか。 ちなみに、Excelには「シートを保存する」という概念はありません。 あくまで、そのシートがある「ブックを保存する」ということです。 ブックを保存する場合は、私が以前(No.414739)で回答した通り、 'シートの参照破棄 Set xlSheet = Nothing 'ブックを保存して閉じて、参照破棄 xlBook.Close True Set xlBook = Nothing ’アプリケーションを終了して、参照破棄 xlApp.Quit Set xlApp = Nothing で、保存して終了出来ますが。

GERRARD
質問者

補足

1.何を保存したいのでしょうか。 VBのフォーム上のテキストボックスなどにユーザーが入力した値でしょうか。 はい、ユーザーが入力した値です。 2.どこに保存したいのでしょうか。 テスト.xlsファイルの「Sheet1」ですか。 はい、そうです。 3.「Sheet2」はどういう関係があるのでしょうか。 VBと関係なく、テスト.xlsを開いて、sheet2で 保存します。VBを実行して、ユーザーが入力した値をsheet1に保存するときに、sheet2がアクティブになっているとおもわれるのですが、ですからEXCELを開くときにsheet1をアクティブにしたいのですが。

関連するQ&A

  • VB2008 エクセル出力

    VB2008 エクセル出力 教えていただけると助かります VB6.0使用時にエクセル出力をするために下記のようなプログラムで出力していました ※「Microsoft Excel 9.0 Object Library」を参照 Dim xlApp As EXCEL.Application Dim xlBook As EXCEL.Workbook Dim xlsheet As EXCEL.Worksheet Dim File As String File = App.Path + "\EXCEL\" + "フォーム.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(File) Set xlsheet = xlBook.Worksheets("テスト") xlsheet.Range("A1") = "テスト" 'フォルダ作成 If Dir("D:\", vbDirectory) = "" Then Call Mkdirs("D:\テスト") 'Worksheetを名前をつけて保存します。 xlApp.DisplayAlerts = False xlsheet.SaveAs "D:\テスト\テスト.xls" xlApp.Quit Set xlApp = Nothing Set xlBook = Nothing Set xlsheet = Nothing VB2008の場合だとどのように書けば同じように動きますか ※色々試してみましたがダメでした 「Microsoft Excel 12.0 Object Library」を参照しています

  • VB6.0上でExcelオブジェクトを生成

    VB6.0上でExcelオブジェクトの生成についてです。 その1 Dim xlApp As New Excel.Application Dim xlBook As New Excel.Workbook Dim xlSheet As New Excel.Worksheet Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) と その2 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) と、どちらが良いのでしょうか? 開発環境は  Windows2000  VB 6.0  Excel 2003 です。

  • エクセルの開放

    VB2008でエクセルを操作しているのですが、エクセルのプロセスが残ってしまってどうやって解放すればいいのかわかりません。 サンプルプログラム-------------- Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Add Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item(1) Dim xlobj As Object '開放用 xlobj = xlSheet.Range("A1:C3") xlobj.Value = "TEST" MRComObject(xlobj) MRComObject(xlSheet) MRComObject(xlSheets) xlBook.Close(False) MRComObject(xlBook) MRComObject(xlBooks) xlApp.Quit() MRComObject(xlApp) MRComObjectでCOM オブジェクトへの参照を解放しています。 このプログラムでは特に問題ないのですが、 xlobj = xlApp.Worksheets("Sheet2") xlobj2 = xlobj.Range("A1:C2") xlobj2.Value = "TEST" のようにワークシートを指定すると解放できません。 xlSheet = xlBook.Worksheets("Sheet2") としてもプロセスが残ります。 またVB6.0では可能だった xlApp.Worksheets("Sheet2").Select() のようにワークシートを切り替えるときもVB2008ではプロセスが残ってしまいます。 これはどのようにしたら解決するのでしょうか?

  • VBからエクセルを起動。そのあとエクセルを終了

    教えてください。 VBからエクセルを起動します。 そのあと、エクセルのシートの上にデータを貼り付けます。そして、エクセルを終了します。 しかし、エクセルが終了しません。 タスクバー上のエクセルをクリックすると終了します。 どうして、このような現象が起こるのかわかりません。 教えてください。 下記に同様のサンプルを書きました 誤記入があるかも知れませんが このような感じのプログラムです。 以上、よろしくお願いします。 public sub test Dim XApp as Excel.Application Dim nfilename as string Dim xlBook As Object Dim xlSheet As Object ' エクセルを起動 Set xlApp = New Excel.Application nfilename ="AAAA.xls" ' 指定されたファイルを開く Call xlApp.Workbooks.Open(nfilename) Set xlBook = xlApp.ActiveWorkbook Set xlSheet = xlBook.Worksheets(1) 'フォームを貼り付ける xlSheet.Range("a1").PasteSpecial      'ファイル名の作成 Filename="BBBB.xls" '保存 ChDir "C:\" xlBook.SaveAs Filename:=Filename,FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Set xlSheet = Nothing xlBook.Close True Set xlBook = Nothing xlApp.Quit Set xlApp = Nothing End sub

  • VB2005でExcelのシートをコピー

    VB2005Expressで開発をしています。 Excelのシートをコピーして同じbookに追加をしたいと思っています。 下記でまずExcelを使用できるようにして  Dim xlApp As New Excel.Application  Dim xlBooks As Excel.Workbooks = xlApp.Workbooks  Dim xlBook As Excel.Workbook = xlBooks.Add '新規のファイルを開く  Dim xlSheets As Excel.Sheets = xlBook.Worksheets  Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)  xlApp.Visible = True 下記で追加できると思うのですが、()内にセットするパラメータが わかりません・・・  xlBook.Worksheets.Copy() どなたかご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • VBからExcelのアクティブセルの位置を知る方法

    VB6でExcel2000のワークシートを操作するプログラムを作成しています。次のようなことをやりたいと思ってます。 (1)Excelのワークシートを開く (2)ワークシートの1点をクリックして、アクティブセルとする。(例えばA1) (3)VBのプログラムのボタンを押すと、アクティブセルを基点に3×3を選択範囲とする。 そこで次のようなプログラムを書いてみました。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = GetObject(, "Excel.Application") If Err.Number Then MsgBox "Excel が起動されていません。" Err.Clear Else ' MsgBox "Excel はすでに起動中です。" Set xlBook = xlApp.Workbooks.Item(1) Set xlSheet = xlBook.Worksheets.Item(1)     'アクティブセルを取得する     'アクティブセルを3x3に拡張する計算 xlSheet.Range("3x3に拡張した範囲").Select Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End If しかし、アクティブセルを取得する方法がわかりません。誰か教えてください。

  • Excel出力後のExcelの起動について

    Vb側からデータをExcelに出力し、その画面を表示させたまま 出力したExcelを確認しようと思ったところ、Excelは起動するものの シートが表示されない現象が起こりました。 出力後のExcelの終了(解放?)のロジックは下記の通りです。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets.Add … … Sheetへの出力処理 … … Set xlApp = Nothing Set xlBook = Nothing Set xlSheet = Nothing この現象の回避方法がありましたらご教授ください。 Windows2000 Vb6.0 SP5 Excel2000

  • EXCELでオートシェイプ(テキストボックス)を作成したい

    EXCELの「図形描画」ツールバーにあるテキストボックスを作成し、その中に文字を書き込むという作業をVBで行いたいのですが、作成方法が分かりません。 (1)Dim.... (2)Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) ※ここで作成したい (3)保存作業 (4)閉じる OLEObjectsあたりを使うのではないかと思い、色々試したのですがダメでした。 ご存じの方、是非ご教授ください。 開発環境:WinXpPro(SP2)+VB6(SP6)

  • EXCEL警告「置換対象のデータが見つかりません」を出ないようにしたい

    VB6からEXCELファイルを操作しています。 その中で、置換をやっているのですが、データによっては置換するデータが無い場合があります。 無い場合に、「置換対象のデータが見つかりません。~」というダイヤログボックスが出てしまうのですが、これを出さない方法が有りますでしょうか。 出さない方法がないとすれば、置換対象データがあるかどうかのチェックを先にすればいいのでしょうけど、コードが倍増しそうなものですから。 参考までにコードを付記します。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(filename) Set xlSheet = xlBook.Worksheets("Sheet1") xlSheet.Columns("A:A").Replace What:="1", Replacement:="男" xlSheet.Columns("A:A").Replace What:="2", Replacement:="女" xlSheet.Columns("A:A").Replace What:="9", Replacement:="不明"

  • エクセルを表示できない

    プログラム初心者です。 Private Sub Command3_Click() On Error Resume Next Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet With xlApp.Application Set xlApp = GetObject("F:\vb6.0\book1.xls") Set xlBook = xlApp.Workbooks.Open("Book1") Set xlSheet = xlBook.Worksheets(1) xlApp.Application.Visible = True End Sub と入力したのですが、実行してボタンをクリックしてもエクセルの表が表示されません。なぜでしょうか?