VB2010でExcelを開くと実行時エラーになる

このQ&Aのポイント
  • VB2010のプログラムでExcelファイルを開くと実行時エラーが発生しています。現物をダブルクリックで起動すると問題なく動作しますが、プログラム起動では保護されているセルにマクロが記述しに行こうとすると「実行時エラー ”1004”」となります。
  • 質問者はVB2010で特定のExcelファイルを開くプログラムを作成していますが、プログラム起動時に実行時エラーが発生しています。具体的には、保護されているセルにマクロが記述しに行こうとすると「実行時エラー ”1004”」が表示されます。
  • VB2010を使用してExcelを開くプログラムを作成していますが、プログラム起動時に「実行時エラー ”1004”」が発生しています。現物をダブルクリックで起動する場合は問題なく動作するため、原因を特定することができません。
回答を見る
  • ベストアンサー

VB2010でExcelを開くと実行時エラーになる

持っているマニュアルには載っていないので、質問させていただきます。 ボタンをクリックしたら、特定のExcelファイルを開くプログラムを作成中です。     Dim oExcel As Object oExcel = CreateObject("Excel.Application") oExcel.Visible = True oExcel.workbooks.Open(gxls) oExcel.Selection.ClearContents() こんな感じで起動するにはするのですが、現物をダブルクリックで起動したときとマクロ(VBA)の動きが異なります。 プログラム起動では保護されているセルにマクロが記述しに行こうとすると「実行時エラー ”1004”」となってしまいます。 現物をダブルクリックする場合は、問題なく動きます。 どうしてなのかどうしてもわかりません。 どなたかご教授願います。

noname#134268
noname#134268

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

原因はわかりませんが >保護されているセルにマクロが記述しに行こうとすると「実行時エラー ”1004”」となってしまいます。 こちらが正常で >現物をダブルクリックする場合は、問題なく動きます。 こちらが問題だと思うのですが。 実際に エクセルのシートに保護をかけて マクロで そのセルの内容を 書き換えにいったら 「実行時エラー ”1004”」 でした。

noname#134268
質問者

お礼

正しい動きはエラーが出ることなんですね。 わかりました。 ありがとうございました。 大変勉強になりました。

その他の回答 (1)

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

質問の意味不明(何が不思議なのか)。 VBAでシートの保護されたセルに値をセットしようとすると Sub test01() Range("b1") = "aa" End Sub は実行時エラー1004で止まります。実質終了せざるを得ない。 これはVB2010からでも実質同じエクセルプログラムが走るので同じでしょう。 ーー シートのセルに直接入力し問うとすると、エラーコメントは出るが、エクセルは続けられる。 この違いを要っているのですか。 VBの方で try catch finallyを入れるとかの話ですか。 ーー セルでダブルクリックはセル選択なので、 エクセルでの「シートの保護」で、現在の ロックされたセル選択の選択 ロックされていないセルの選択 のチェック状態が関係しているのかな。

noname#134268
質問者

お礼

保護されているセルにはマクロだろうと手入力だろうとできないということですね。 そもそもマクロならできると思っていたことがいけませんでした。 大変ありがとうございました。

関連するQ&A

  • Excel ファイルに保存すると実行時エラーになる

    こんにちは。宮本と申します。VB6(SP5)で、 プログラミングをしております。 下記の様にプログラミングをしましたが、どうしても [実行時エラー’1004’ test_1.xlsにアクセスできません]と、なります。 c:\test.xls は、元々ある事を前提とし、c:\test_1.xlsに上書きをしたいのです。 宜しくお願い致します。 Dim wApp As Excel.Application Dim wExl As Object Set wApp = CreateObject("Excel.Application") Set wApp = CreateObject("Excel.Application") Set wExl = wApp.Workbooks.Open("c:\test.xls") wExl.Worksheets(1).Cells(1, 1).Value = 3000 wExl.Application.Visible = False wExl.Application.DisplayAlerts = False wExl.SaveAs "c:\test_1.xls" <---ここで、エラー

  • VB6からExcel出力し、ブックを閉じたとき異常終了

    Win98 FirstEdition VB6 SP3 Excel97 SR1 上記の環境において、下記のソースのように、VBからExcelを起動してデータを出力した際、Excelのブックを閉じると、「保存しますか?」の「はい」「いいえ」関わらず、あるいはブックをセーブした後閉じても、Excelが異常終了してしまいます。 ブックではなく、Excel自体を閉じた場合は全く問題ありません。 どなたか対処法をご存じな方いらっしゃいませんか? Dim objXls As Object Dim objBook As Object Dim objSheet As Object Set objXls = CreateObject("Excel.Application") objXls.Workbooks.Add objXls.Visible = False Set objBook = objXls.ActiveWorkbook Set objSheet = objBook.Worksheets(1) (中略) objXls.Visible = True

  • VBAでExcelのOLE Objectの取得方法

    過去のプログラムを確認していたところ、以下のモジュールがありました。 EXCELファイルを開き、この後省略していますが、書式設定だの、罫線だのを 変えるコーディングが続きます。 ここで質問ですが、Set OEXCEL…のところで「CreateObject」と「GetObject」を 使い分けていますがこれはどういう意味でしょうか? ご教授お願いします。 Dim OEXCEL As Object Dim stXls As String stAcXObj=0 ・・・INIファイルで値を持ちます。 If stAcXObj = "0" Then '参照作成 Set OEXCEL = CreateObject("Excel.Application") Else '参照取得 Set OXLS = GetObject("C:\aaa.xls") Set OEXCEL = OXLS.Application End If OEXCEL.workbooks.Open ("C:\aaa.xls")

  • excelのデータをvbにとりこむ

    excelのあるセルのデータを取り込みたいのですが、 どうすればよいでしょうか? C:\123.xlsというファイルのsheet1の (2,4)というセルにある実数型のデータを 出力するという、意図です。 Private Sub Setting_Click() Dim xls As Object Dim xlsFilename As String Dim xlsSheetname As String xlsFilename = "C:\123.xls" xlsSheetname = "Sheet1" Set xls = CreateObject("Excel.Application") xls.Application.Visible = False xls.Application.Workbooks.Open xlsFilename Dim r1 As Double r1 = xls.Application.Workbooks.cells(2, 4).Value Print r1 end sub

  • VB2005 → EXCELのセルに貼り付け

    いつもお世話になってます。 私はVB入門者です。 取得した値をセルに転載する処理を行っております。 値をセルに貼り付けるのは下記の方法で出来たのですが Dim oExcel As Object Dim oBook As Object Dim oSheet As Object oExcel = CreateObject("Excel.Application") oBook = oExcel.Workbooks.open("C:\hoge.xls") oSheet = oBook.Worksheets(1) oSheet.Range("A2") = hoge_name oSheet.Range("A2") = hoge1_name  ←これをA2のhoge_nameの下段に入れたいのです。 oBook.SaveAs("C:\hoge.xls") oSheet = Nothing oBook = Nothing oExcel.Quit() oExcel = Nothing GC.Collect() 2つの変数をエクセルのひとつのセルに改行して貼り付ける方法を教えて下さい。 又、上書き保存の際に確認のメッセージは不要なのに表示されてしまいます。 どのように書き換えたら良いのでしょうか。 どうぞよろしくお願いします。

  • VB2005からマクロ(EXCEL2003)呼出時の戻り値

    現在VB2005からExcel2003のマクロを呼び出していますが、 戻り値の取得方法が分からなく調べています。 マクロが実行できることは確認しています。 戻り値はそもそも取得できるのでしょうか? 行っている処理は以下の通りです。 ■VB側■ Dim oExcel As New Excel.ApplicationClass() Dim oBook As Excel.WorkbookClass Dim filePath As String = "参照XLSファイルパス" Dim oBooks As Excel.Workbooks = oExcel.Workbooks oExcel.Visible = False oBook = oBooks.Open(filePath) Dim ans As String = CType(oExcel.Run("'" & oBook.Name & "'!ThisWorkbook.DoKbTestWithParameter", "テスト"), String) System.Runtime.InteropServices.Marshal.ReleaseComObject(oBook) oBook = Nothing System.Runtime.InteropServices.Marshal.ReleaseComObject(oBooks) oBooks = Nothing oExcel.Quit() System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel) oExcel = Nothing ■EXCE側■ Public Function DoKbTestWithParameter(sMsg As String) MsgBox sMsg DoKbTestWithParameter = "VBA関数戻り値" End Function ご教授お願いします。

  • AccessからExcelマクロを実行したい

    Accessから既存のExcelファイルを開き、そのファイル内にある マクロを自動実行させたいと思っています。 Set obj = CreateObject("Excel.Application") obj.Visible = True Set Myobj = obj: Workbooks.Open ("エクセルファイル名(フルパス)") Myobj.Run マクロ名 と書いているのですが、Excelファイルを開くところまでしか動いてくれません。 マクロ名の書き方が悪いのかもしれませんが、VBAに不慣れなため どう直せばよいのかわかりません。 どうかよろしくお願いします。 ちなみに環境はWindows2000、Office2000です。

  • VBscriptでEXCELを起動

    今、非常に悩んでいる問題があります。 VBscriptでEXCELを起動したいのですがうまく行きません。 (Web画面であるボタンを押下すると、Webサーバ上のEXCELが開くというものです) プログラム的には (1) Dim excel Set excel = GetObject("", "Excel.Application") excel.Visible = True excel.Workbooks.Open "http://ホスト名/フォルダ名/ファイル名.xls" Set WK_excel = Nothing (2) Dim excel Set excel = CreateObject("Excel.Application") excel.Visible = True excel.Workbooks.Open "http://ホスト名/フォルダ名/ファイル名.xls" Set WK_excel = Nothing の二通り(他いろいろ)を試したのですが、何もおきずに終了します。 同じことをVB6.0でするとうまく行くのですが・・・ はっきり言うとVBscriptに関して知識がなく 質問内容も説明が分かりにくいかもしれませんが よろしくお願いいたします。

  • 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しています。 原因の見当が皆目つかず困っています。

  • エクセルが非表示で開く

    vbsでエクセルを開こうと思いネットをググって下記のような命令文を拾ってきて使っています。 >>Set oEXCEL = WScript.CreateObject("Excel.Application") >>oEXCEL.Workbooks.Open(SelfPath & "..\..\Trend_Book.xls") >>oEXCEL.Sheets(1).Select ところがこの方法では何らかの条件(不明なのですが)によって非表示の状態で開いているようなのです。 毎回確実に表示させて開く方法をご存知の方、いらしたら是非お教えください。 よろしくお願いします。 ※OSはXP、エクセルは2000です。