• 締切済み

Excelファイルを開くとき、読み取り専用にするかどうかのダイアログを出ないようにしたい

お世話になります。 環境 Windows2000 VB6.0 Office2003 現在、VBでOffice系のファイルを対象に処理をするプログラムを動かしています。 【問題】 Office2003(Word/Excel)保存設定に[読み取り専用を推奨する]というチェックが存在します。 このチェックをすると、Officeファイルを開くとき、読取専用として開くかどうかのダイアログが出てしまい、処理が止まってしまいます。 このダイアログを出さずに処理する方法はありませんか? 【現在】 Private Function blnCnvExcel(ByRef objCnvFile As File, _ ByVal strCnvPdfName As String) As Boolean Dim objFso As New FileSystemObject Dim objPdfFile As File Dim objApp As Application '' Excelアプリケーション Dim objXls As Workbook '' Excelワークブック Dim objSheet As Worksheet '' ワークシート Dim strCnvFolder As String '' 出力先フォルダ Dim SheetName() As String ''表示シート格納 blnCnvExcelToPdf = False strCnvFolder = objCnvFile.ParentFolder Set objApp = CreateObject("Excel.Application") Set objXls = objApp.Workbooks.Open(objCnvFile.Path)

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

> 多分IgnoreReadOnlyRecommendedですと、 > 読み取り専用にチェックが入っている場合ですよね。 「多分」とは試してないって事でしょうか? 実際に試されてダメだったのであれば、VB6.0もExcel2003も無いのでこれ以上アドバイスは出来ませんが、試しもしないでの発言だとしたらちょっと失礼ですね。 繰り返しになりますが、VBAのヘルプには 【読み取り専用を推奨する】チェックボックスをオンにして保存されたブック ^^^^^^^^^^^^^^^^^^^^^^ とあります。 こちらで確認可能な Excel97と2000でも「読み取り専用を推奨する」チェックは存在しますのでExcel2003で新たに追加されたオプション機能では無いですし、VBAの下記コードで「読み取り専用を推奨する」チェックを入れたブックを開く際には Test1 だとメッセージは出ません。 Sub Test1() Dim fName  fName = Application.GetOpenFilename  If fName = False Then Exit Sub  Workbooks.Open fName, IgnoreReadOnlyRecommended:=True End Sub Sub Test2() Dim fName  fName = Application.GetOpenFilename  If fName = False Then Exit Sub  Workbooks.Open fName End Sub また、VBAでは下記でも出ません。 Sub Test3() Dim fName  fName = Application.GetOpenFilename  If fName = False Then Exit Sub  Application.DisplayAlerts = False  Workbooks.Open fName  Application.DisplayAlerts = True End Sub

akahuku7
質問者

お礼

返信遅くなってしまい、大変申し訳ありません。 >試しもしないでの発言だとしたらちょっと失礼ですね。 試しもせずに、決め付けたような書き方をしてしまいました。すいません。 papayukaさんのやり方で試してみます。 自分はまだ初心者なので時間もかかると思いますが、試したら結果を書き込みます。 ほんとにすいませんでした。

全文を見る
すると、全ての回答が全文表示されます。
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

VBは解かりませんが、VBAだとOpenメソッドの引数にIgnoreReadOnlyRecommended があり、ヘルプには下記のように書いてありますよ。 IgnoreReadOnlyRecommended 省略可能です。バリアント型 (Variant) の値を指定します。[読み取り専用を推奨する] チェック ボックスをオンにして保存されたブックを開くときでも、読み取り専用を推奨するメッセージを非表示にするには、True を指定します。

akahuku7
質問者

補足

回答ありがとうございます。 多分IgnoreReadOnlyRecommendedですと、読み取り専用にチェックが入っている場合ですよね。 今回の場合、厄介なことに読み取り専用にはチェックが入っておらず、 「~保存する必要がなければ読み取り専用で開いてください。読み取り専用で開きますか?」 というダイアログなのです。 http://www.microsoft.com/japan/technet/prodtechnol/office/office2003/deploy/secdesn.mspx このページで[読み取り専用を推奨する保護]で検索してみてください。 やはり無理なのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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

  • 開いているXLSファイルが読み取り専用か調べる

    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("C:\test.xls") Set xlSheet = xlBook.Worksheets(1) 開いたExcelファイルが読み取り専用になっているかどうかを調べるにはどうすればいいですか? ファイルの属性が読み取り専用かどうかは取得できるのですが、属性は読み取り専用ではなくても誰か他のユーザーがネットワークから開いているために読み取り専用で開いている場合もわかるようにしたいです。 お願いします。

  • 「エクセルファイルが開いていたら開かない」としたい

    「エクセルファイルが開いていたら開かない」としたいです。 VB2010です。 -------------------------------------------------------------- Imports Microsoft.Office.Interop '参照設定済み Module Module1 Sub ExcelOpen() Dim ExcApp As Excel.Application Dim book As Excel.Workbook Dim MyPath As String MyPath = "C:" ExcApp = CreateObject("Excel.Application") ExcApp.Visible = True book = ExcApp.Workbooks.Open(MyPath & "\test.xlsm") End Sub End Module -------------------------------------------------------------- で、ファイルを開くのですが、既にファイルが開いている場合は、2個開いてしまい、 最後に開いたファイルが読み取り専用になってしまいます。 IFで、開いているかどうかを取得して、 開いているのなら「既に開いています」として、ExitSubがしたいです。 ご協力よろしくお願いします。

  • アクセスからエクセルファイルが開けない

    Cドライブに、新規 Microsoft Office Excel ワークシート.xlsxと言うファイルを作成しました。 そのうえで、アクセスから ―――――――――――――――――――――――――――――――― Sub できない1() Dim xlsWB As Object Set xlsWB = CreateObject("C:\新規 Microsoft Office Excel ワークシート.xlsx") xlsWB.Application.Run xlsWB.Name Set xlsWB = Nothing End Sub ―――――――――――――――――――――――――――――――― をすると ------------------------ 実行時エラー '1004' マクロ'新規 Microsoft Office Excel ワークシート.xlsxを実行できません。 このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。 ------------------------ となります。 なので別の方法で開こうと、 ―――――――――――――――――――――――――――――――― Sub できない2() Dim xlApp As Excel.Application Dim xlBook As Excel.Application Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\新規 Microsoft Office Excel ワークシート.xlsx") xlApp.Visible = True Set xlApp = Nothing Set xlBook = Nothing End Sub ―――――――――――――――――――――――――――――――― にしたのですが、 実行時エラー’13’型が一致しません になります。 何がダメなのでしょう? マクロ付きファイルにしないとダメですか? もしくはファイル名に空白があるからエラーになるのでしょうか? そして、なぜ二つのコードのエラー内容がちがうのでしょう? それと、なぜか上記マクロを実行していると ~$新規 Microsoft Office Excel ワークシート.xlsx と言うファイルが出来上がります。(添付画像参照) でもファイルは開いていません。 この状態で、新規 Microsoft Office Excel ワークシート.xlsx をダブルクリックして開こうとすると、一瞬だけ画面に表れてすぐ消えます。 オフィスのバージョンは2007です。 ご回答よろしくお願いします。

  • VBSからのエクセル操作での初期ダイアログへの対応

    VBSからのエクセル操作での初期ダイアログへの対応 VBSでのエクセルの初期ダイアログへの対応について教えてください。 ここでいう「初期ダイアログ」とは以下のことを指しています。 (A)読み取り推奨設定時にでるダイアログ  「…を変更し、保存する必要がなければ、読み取り専用で…」 (B)マクロを含むファイルを開くときに出るセキュリティ警告ダイアログ  「マクロにはウイルスが含まれている場合があります。…」 (C)読み取り・書き込みパスワード設定時のパスワード入力ダイアログ ソースとしては、下記に示す簡易な内容です。 このとき、ファイルに何も属性がなければファイルを開いていることを 意識させずにエクセルの内容を取得することが出来ます。 しかし、読み取り推奨にされているときや、マクロが含まれるときには、 ダイアログが表示されてしまい、スマートに値を取得することが出来ません。 これを何か引数を与えるなどして、ダイアログを表示させないもしくは 一瞬ダイアログが表示されても、スクリプトに閉じさせるように したいと思っています。 もし方法があるならそれを教えてください。 「方法がない」ということが分かっている場合は、 その旨を教えていただきたいです。 よろしくお願いします。 ■α Set excel = WScript.GetObject(filePath) MsgBox excel.Sheets(sheetName).Cells(2, 2) ■β Set excel = WScript.CreateObject("Excel.Application") excel.Workbooks.Open filePath, , true excel.Visible = false Set sheet = excel.Sheets(sheetName) MsgBox sheet.Cells(2, 2).value excel.Workbooks.Close excel.Quit

  • ADOを使用してExcelデータをAccess取込む際のExcelシートの選択について

    表記のとおりADOを使用してExcelデータをAccess取込むのですが、Sheet1のデータを読込んだ後、引続きSheet2のデータを読込む様にVBAコードを書いたつもりですが、Sheet1をアクティブにした状態でExcelデータを保存していたらSheet1のデータを重複して取込み、Sheet2をアクティブにした状態でExcelデータを保存していたらSheet2のデータを重複して取込んでしまいます。どこをどうすればSheet1のデータを読込んだ後、引続きSheet2のデータを読込む様に出来るのでしょうか? ====== VBAコードの抜粋 =========   Dim xlApp As Object       ' Excelのアプリケーション定義   Dim xlBook As Object      ' ExcelのワークブックのフォルダPath+ファイル名を定義   Dim xlSheet As Object      ' Excelの参照するシート名を定義   Dim SheetName As String     ' シート名を代入   Dim SheetCount As Byte     ' シートの選択 For SheetCount = 1 To 2       ' 1回目のループでSheet1から2回目のループでSheet2からデータを取り込む If SheetCount = 1 Then SheetName = "Sheet1" If SheetCount = 2 Then SheetName = "Sheet2" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("ファイルPath+ファイル名") Set xlSheet = xlBook.Worksheets(SheetName) Set Wcell = xlSheet.Range("A1") Set Cn = CurrentProject.Connection Rs.Open "取込みテーブル", Cn, adOpenKeyset, adLockOptimistic xlApp.Application.Visible = True   データを取込むコードあり(省略) xlBook.Close xlApp.Visible = False Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing Next SheetCount

  • VB6.0でEXCELにシートを追加したい

    初心者なので、説明がつたないところ、用語の使い方が間違っいるところがあるかと思いますが、今後のためにバシバシ指導お願いします。m(_ _)m VBにてEXCELシートを作成し、それを既存ファイルのシートに追加し、保存したいと考えています。 ・既存ファイルがなけれが新規作成 ・既存ファイルに同名のシートがあれば上書きするか、シ ート名を変更するか聞く 私が考えた流れは、 1.既存ファイルを開く 2.新しいシートを追加する 3.シートの名前をつける 4.既に同名シートがあれば上書きの有無を聞く 5.VBで作ったEXCELシートを既存ファイルのシートにコピー 6.既存ファイルを更新 7.EXCELを閉じる です。 まず、既存シートはコモンダイアログで探し、追加したい既存シートを開くところまではできました。 ただ、 シートを追加しようとすると文字が赤くなって怒られました。 いろいろ調べた結果の文章なので、どうしてここで赤くなるのかが解読できません。 Dim objBook2 As Excel.Workbook Dim objSheet2 As Excel.Worksheet Set objBook2 = objExcel.Workbooks.Open(CDl.FileName) objBook2 .Visible = True Set objSheet2 = objBook2.Worksheets(1) Sheets.Add(after:=Worksheets(Worksheets.Count)) ↑ここでだめでした。 一気にコピーしたほうがいいのかとも思い、下記を記入しましがだめでした。 objSheet.Copy After:=CDl.FileName.Sheets(CDl.FileName.Sheets.Count) 長々とかきましたが、どなたかEXCELシートを追加する記述方法を教えてください。 よろしくお願いします。

  • VBAでAccessからExcel

    VBAでAccessからExcelファイルを ダイアログで選択して開き転記をさせたい。 以下のように書いてみるとダイアログ表示までは 出るのですが、Excelは起動しません、 何かが足りないとは思うのですが ご指摘、ご教授お願いします。 Sub test2() Dim objxls Set objxls = CreateObject("excel.application") Dim myfile Dim xls myfile = objxls.Application.getopenfilename() Set xls = objxls.workbooks.Open(myfile)

  • AccessからExcelにコピペするコードの作成

    Accessのカレントレコードをコピーし、特定のExcelブック(仮称A)にペーストするVBAコードを書いてみたのですが、 ペーストが上手くできず困っています。 (下記コードの「'任意のExcelブックAの、シートB内のセルA2にペーストする」の部分です) ------------------------------- '任意のExcelブックAを開く Dim Objxls As Object Dim strFile As String Dim wb As Object strFile = "C:\Users\ExcelブックAのある場所" Set Objxls = CreateObject("Excel.Application") With Objxls .Visible = True .Workbooks.Open strFile End With 'Accessのカレントレコードを選択 DoCmd.RunCommand acCmdSelectRecord 'コピーを実行 DoCmd.RunCommand acCmdCopy '任意のExcelブックAの、シートB内のセルA2にペーストする With Objxls.Workbooks(Objxls.Workbooks.Count) .Sheets("B").Range("A2").Paste End With ------------------------------- VBA初心者のため、複数のサイトを参考にしながらコードを作成しています。 説明が不足している部分がありましたら申し訳ございません。 どなたか知恵をお貸し頂けますと助かります。

  • 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 よろしくお願いします。