• 締切済み

VBからExcelファイルを開くときの再計算の解除方法

VB6.0からExcelファイルを開くときに、 再計算処理が走ってしまい、 大きなファイルの場合とても時間がかかってしまっています。 開く前に、再計算は行わないで開く。 などの設定はできませんか? Dim xlsObj As Excel.Application ' ココに入れてもまだExcelオブジェクトが生成されていないのでエラー //xlsObj.Calculation = xlCalculationManual Set xlsFile = xlsObj.Workbooks.Open(ファイルパス) ' ココに入れたらファイル開いて再計算処理が走ったあとなので、すでに手遅れ。 //xlsObj.Calculation = xlCalculationManual なにかいい案がありましたら、 教えてください。

みんなの回答

noname#27115
noname#27115
回答No.3

Dim xlsObj As New Excel.Application  xlsObj.Calculation = xlCalculationManual  Set xlsFile = xlsObj.Workbooks.Open(ファイルパス) 宣言時にNewを使ってオブジェクトを作成してどうでしょうか? テストはしていません。。すみません。m(__)m

回答No.2

> ココに入れてもまだExcelオブジェクトが生成されていないのでエラー ★ここで、ダミーのファイルを開く又は、新規ワークシートを作成 xlsObj.Calculation = xlCalculationManual Set xlsFile = xlsObj.Workbooks.Open(ファイルパス) ★時ほどのダミーのブックを閉じる ではどうでしょうか

  • sacoman
  • ベストアンサー率56% (33/58)
回答No.1

VBでコントロールせずに、対象ファイルのオプション設定で 計算方法を"手動"に設定して保存しておく事は出来ないでしょうか?

masa4_net
質問者

お礼

回答ありがとうございます。 今回の対象ファイルはお客様側の既存のシステムで作成されるものであり、そのファイルの設定を変更することはできません。 さらに、そのファイル数も莫大なものであり、 手作業での手動設定への変更なども考えておりません。

関連するQ&A

  • VisualBaic2005でExcelファイルを読む方法

    Dim oExl As Excel.Application Dim WorkBookName As Excel.Workbook Dim Open_WorkSheet_Name As Excel.Worksheet oExl = CreateObject("Excel.Application") WorkBookName = oExl.Workbooks.Open("d:\book011.xls", , False) この時点でExcelのファイルが開きません。 また、oExl.Visible = True を実行するとExcel自体は開くのですが、ファイルのオープンは できません。また、終了時に oExl.Workbooks.Close() oExl = Nothingを実行すると Excel自体は閉じるのですが、プロセスは残りまます。 VB2005からExcelファイルを読む方法とクローズ処理の方法を 教えてください。よろしくお願いします。

  • VB6でEXCELをクローズ出来ない

    VB6でEXCELを使用した後クローズ処理をしたつもりですが、VBと別にEXCELを起動しVBで使ったEXCELを読み込もうとすると、「編集のためロックされています」とメッセージが出て、読み取り専用でしかオープン出来ません。また、VBでEXCELを繰り返しオープンするとメモリがいっぱいになってしまいます。 VBでのEXCELオープンは Dim fnm As String Dim exl As Object fnm = "EXCEL File名" 'フルパスで指定 Set exl = CreateObject("Excel.Application") exl.Application.Workbooks.Open FileName:=fnm クローズは Set exl = CreateObject("Excel.Application") exl.Application.Quit Set Sheet = Nothing Set BooK = Nothing Set ExcelApp = Nothing 以上です。なお、VBの参考書は入門書だけ持っていますが、このようなことは書いてありません。従って上のコードも意味もわからず、ネットから拾ってきたまま使用しています。参考書または、Webサイトを紹介して頂ければ有り難いです。

  • VB6からExcelを操作する

    VB6.0からExcelの操作をしています。 そのなかで、Excelシートを印刷したいのですが、どのようにしたら良いのでしょうか。 また、ExcelVBAのFunctionやSubを実行するにはどのようにするのでしょうか。 VB6.0内でExcel操作は次のようにしています。 Dim ExcelApp As Object Dim EWorkbook As Object Dim ESheet As Object Set ExcelApp = CreateObject("Excel.Application") Set EWorkbook = ExcelApp.Workbooks.Open(ExcelBookFlNm) Set ESheet = EWorkbook.Sheets(M_SheetNm) Set ESheet = Nothing Set EWorkbook = Nothing ExcelApp.Quit Set ExcelApp = Nothing よろしくお願いします。

  • VB2005 で立ち上がった状態のEXCELファイルからデータ読込みだけしたいのですが

    どなた様かお助けください。VB2005を勉強中の素人です。 既に立ち上げた状態のEXCELファイルから単純に特定セルの数値をVBのラベルに読み取りたいだけなのですが、ネットや書籍にてVBでのEXCEL読込み方法について調べたのですが、どこの情報をみても、EXCELの立ち上げとクローズがセットになっており、既にEXCELファイルを開いた状態からでは2重起動となり、読み込みだけの仕方が分かりません。一応下記でファイルのオープンからのクローズまでができるようですが、[open]のところを取り除くとエラーになってしまいます。 ファイル名とセルだけが私の指定したい条件なのですが、なにか単純な読み取り方法はないでしょうか? というか私がアホすぎるのも原因だとは思いますが、ちょっとEXCEL情報読み込ませたかっただけなのにもう2日も悩んでおり、こんなに難しいとは思いませんでした。VBって初心者向けとかいわれていますけど6.0やら.netやらと情報が分散していて何するにも一苦労ですね。  いろいろ調べて下記のコードで最低限読み込みはできるようになりました。(短いコードが好きなので宣言とかはかなり除去しているからかな?時々表示されるセルデータもおかしくなります) EXCELオブジェクトライブラリの参照は済です。 ファイルのオープンとクローズを除去し最終的には立ち上げっぱなしのEXCELから単純な読込み(のみ)を1秒に1回程度繰り返してラベル表示を随時更新するのが目的です。ご助言お願いします。 Dim xlApp As New Excel.Application Dim xlFilePath As String = "C:\あつし\sample.xls" label1.Text = xlApp.Workbooks.Open(xlFilePath).Worksheets.Item(1).Range("A3").Value() xlApp.Quit()

  • エクセル付きVBでファイルオープンすると止まる

    エクセル付きのVBでショートカットキーでマクロを起動し、他のエクセルのファイル(ブック)をオープンするとプログラムが止まり、以降のマクロを処理できません。VBの画面で実行ボタンをクリックするとマクロ通りに正しく処理されるので、マクロ自体に問題はないと思います。 どなたか同様の経験をされた方、もしくは解決方法をご存知の方、解決方法を教えてください。 マクロは「Workbooks.open("パス\ファイル名")」または「workbooks.open FileName:="パス\ファイル名"」としており、どちらも止まります。

  • VB2008のexeファイルについて

    現在、VB2008でフォームを作成し、DataGridViewなどの情報を Excelに出力するというプログラムを設計したのですが、 デバックでテスト動作を行うと、問題なく実行できるのですが、 いざ、exeファイルをデスクトップに置き、実行すると 「指定されたファイルが見つかりません。」というエラーが 出てしまいます。 開こうとしているのは、既存のExcelファイルなのですが、 こちらが、Excelを開く部分のソースです。 Dim xlApp As Object Dim xlBook As Object Dim xlSheet As Object '--------------------- ' EXCELファイルを開く '--------------------- xlApp = CreateObject("Excel.Application") 'Application生成 Dim xlBooks As Excel.Workbooks = xlApp.Workbooks xlBook = xlBooks.Open("C:\TEMP\テスト.xls") xlApp.Visible = True 'EXCELの表示 xlSheet = DirectCast(xlBook.ActiveSheet, Excel.Worksheet) 'Worksheet 少し見づらいかもしれないのですが、まずObject型で宣言し、 その値に、Excel.Applicationなどを代入し、 その中で、マイコンピュータの中のTEMPというフォルダから テストというタイトルのExcelを立ち上げるという形になります。 他のサイトやこちらの質問掲示板なども見たのですが、 同じ結果になってしまうため、解決策が分からない状況と なっています。 どなたか、原因か、対策方法が思いつく方は ご教授願えないでしょうか、 よろしくお願いいたします。

  • VB2008でEXCELのセルデータが読めません

    VB2008でEXCELを開き、セルの内容を読み込もうとしましたが読み込めません。 EXCELのオープンとセルの読み込みは下記により行いました。 Dim strExcelFile As String 'エクセルファイル Dim xlApp As Excel.Application       Dim strExcelData As String xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Open(Filename:=strExcelFile) xlApp.Visible = True 'EXCELは表示されている strExcelData = xlApp.Cells(3,4).ToString EXCELの3列4行には数値が入っていますが、strExcelDataには"System._ ComObject"というデータが読み込まれています。 ToStringは、これをつけないとデータの型が違うとエラーになります。 EXCELのデータは文字型と思っていましたがこれも判りません。 VBのMicrosoft Excel9.0Object LibraryをクリックしてOKしています。 原因の見当が皆目つかず困っています。

  • エクセルファイルが開けない

    こんにちわ。 今回、困難にぶち当たったのでご質問させて頂きます。 VB(正確にはACCESSのVBAですが)から、複数のエクセルファイルを順番に開き、中のセルをクリアする処理をしています。 ソースを下記に記載させて頂きます。 Private Sub Excel_Delete(sXlsFile As String) Dim sXls As Workbook Set sXls = excel.Workbooks.Open(sXlsFile, 0) sXls.Sheets(1).Range("I7:AM3005").ClearContents sXls.Saved = True sXls.Save sXls.Close Set sxlx = Nothing End Sub 今まで問題なく動作していたのですが、ある日、 Set sXls = excel.Workbooks.Open(sXlsFile, 0) の部分でエラーが出ました。 ↓エラー内容は下記の通りです。 実行時エラー-2147417851(80010105) openメソッドは失敗しました ’Workbooks’オブジェクト 開くエクセルファイルは、フォルダから列挙して取得していますので、 ちゃんと存在しています。 しかも、エラーが起きるファイルは同じファイルではなく、エラーが起きない時もあります。 列挙するエクセルファイルは、日に日に増えていっていて、現在では500個 近くになっています。 数が増えてきたのが原因でしょうか? それとも、何か根本的な間違いがあるのでしょうか。 何かわかる方がいらっしゃいましたら、よろしくお願いします。

  • VBによるExcelファイルの開き方を教えて下さい。

    ※VBプログラムからエクセルを起動し技術資料を作成するものです [1]新規ファイルをオープンした場合は、書き込みは正常に作動します。 [2]既設のファイルは、Shell関数でエクセルファイルをオープンしています。 [3]データ書き込みで、下記のエラーが発生します。 「NullReferenceExceptionはハンドルされませんでした。」 (オブジェクト変数又はWithブロック変数が設定されていません) [4]ファイルのオープンコードは下記のとうりです。 Private Sub newF_Open() Me.Hide() xlApp = CreateObject("Excel.Application") xlBook = xlApp.workbooks.add xlSheet = xlBook.sheets("sheet1") xlBook.application.Visible = True Me.Show() MsgBox("Excelファイルは開きましたか", 0, "確認") End Sub 'rbtNEWボタンでの変更記述 Private Sub oldF_Open() Dim Ret As Object Dim Shell As Object With OpenFileDialog1 .Title = "ファイルの選択" .CheckFileExists = True .RestoreDirectory = True End With Me.Hide() Ret = OpenFileDialog1.ShowDialog() If Ret = Windows.Forms.DialogResult.OK Then End If Shell = CreateObject("Shell.Application") Shell.shellexecute(OpenFileDialog1.FileName, , Application.StartupPath, "open", 1) MsgBox("Excelファイルは開きましたか", 0, "確認") Me.Show() End Sub 'rbtOLDボタンでの変更記述 ※既設ファイルへの認識が、新規オープンファイルと異なる為だと思い ますが、 解決方法を、教えてください。

  • VB.net(2005)でエクセルの特定名称のシートを操作したい。

      お世話になります。 WindowsXP + SP3、VB.net(2005)の環境にて開発をしております。 VB.netから既存のエクセルファイル(雛形)を開き、特定の名称のシートを アクティブにしたいのですがどのようにコーディングすれば良いでしょうか? ※色々とネットで情報検索してみましたが特定の名前のシートを操作する  方法をうまく見つけられず質問致しました。 エクセルファイル名:売上情報_2009年.xls シート名     :"200901" ~ "200912" の12シート 以前、VB6で同様のことを行ったときは以下のような記述で実現できました。 Dim xlApp As Object Dim xlsheet As Object xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Open(FileName:="C:\売上情報_2009年.xls") xlsheet = xlApp.Sheets("200908") xlsheet.Activate() 現状、vb.netで以下のコーディングまではできております。 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Open("C:\売上情報_200904.xls") Dim xlSheets As Excel.Sheets = xlBook.Worksheets よろしくお願い致します。