• ベストアンサー

エクセル マクロ OPENメソッド

いつもお世話になります。 OPENメソッドでファイルを開く時に、既にファイルを開いていて、内容を変更していると、「2重に開くと・・・」のメッセージが出てきます。 If Then ステートメントで、開いている時には処理を行わないようにしたいのですが、ヘルプで調べたりしたのですが、構文が分かりません。どなたか教えていただけますでしょうか。 また、このようなことが簡単に分かる書籍などご存知でしたら、あわせて教えていただけますでしょうか。

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

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

どういった場面で使用するのでしょう? Function OpenCheck(FName As String) As Boolean Dim wb As Workbook  OpenCheck = False  For Each wb In Workbooks   If UCase(wb.FullName) = UCase(FName) Then     OpenCheck = True: Exit For   End If Next wb End Function のような Function を作っておいて、 Sub Test() Dim s As String  s = "C:\Test.xls"  If OpenCheck(s) Then    MsgBox s & " は開いてる", vbCritical  Else    MsgBox s & " は開いてない", vbInformation    Workbooks.Open s  End If End Sub のようにフルパスを渡すとか、、、

7-samurai
質問者

お礼

お礼の返事が遅くなりまして申し訳ございませんでした。 ありがとうございました。教えていただきましたものを参考に、解決できました。

その他の回答 (1)

  • p-22
  • ベストアンサー率21% (69/320)
回答No.1

下記をご覧ください

参考URL:
http://www.fuji.ne.jp/~excelyou/
7-samurai
質問者

お礼

お礼が遅くなりまして申し訳ございません。 ありがとうございました。今回の問題以外にも、色々参考にさせていただきました。

関連するQ&A

  • AJAX openメソッドの同期・非同期

    AJAXの同期、非同期についての質問です。 xmlhttp.open("GET",xmlURL,true); xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4 && xmlhttp.status==200){ /* XMLデータ取得後、ここで処理する。。。 */  ・・・ } と定型的に使っていますが、XMLファイルを取得後に、 そのデータを使用してページを作っていく処理をしていますが、 openメソッドでtrueにしているので、非同期ということなので XMLデータ取得後の処理がうまくいかず、その先の処理が先に 実行したりしてエラーになります。。 XMLデータを取得してそれを使う処理の場合は、 openメソッドでfalseにするべきなのでしょうか? 教えてください、お願いします。

  • Openメソッドについて

    ブックAのSheet1にあるセルのデータをブックBのSheet1のセルにコピーするために、以下のようにOpenメソッドを使ったVBAを記述してみたのですが、エラーコード1004「指定されたファイルが存在しません」のようなエラーメッセージが出てきました。Openメソッドが使われている例を見ているとどうやらブックのあるフォルダを指定しているような感じがするのですが、Openメソッドは具体的に該当のブックのある場所を指定しなくてはならないのでしょうか??(私がVBAを記述するにあたり参考にしたインターネットのVBAを紹介するページでは、ブックのある場所を指定せず、私が記述したように直にブック名を入力していました。) お忙しい中申し訳ないのですが、どなたかご教授いただけると、とても嬉しいです!よろしくお願いいたします。 Sub ブックAのデータをブックBに() With Workbooks.Open("ブックA.xlsx")  .Sheets("Sheet1").Range("E8").Value = _ ThisWorkbook.Range("C2").Value End With End Sub

  • エクセルのマクロについて

    エクセルのマクロについてご教示ください。 共有サーバにあるパスワードで保護されたブックを、別のブックの シートからマクロボタンで開くと、当然にパスワードを要求されま すが、ここでメッセージボックスのキャンセルボタンを押すと、 Openメソッドは失敗しました。Workbooksオブジェクトという実行時 エラーが表示されます。  このエラー表示を回避できる方法をご教示ください。  If文で処理しようと試みましたがだめでした。  よろしくお願いいたします。 

  • EXCEL マクロ 

    お世話になります。 マクロは初心者です。 セルの数値を参照して、シートをアクティブにしたいのですが 下記のような繰り返しでシートが30ぐらいあるので、簡単な 表現に出来ないでしょうか。 宜しくお願いします。 Private Sub Workbook_Open() If 0 <= Worksheets(4).Range("M1") < 7 Then Worksheets(4).Activate End If If 0 <= Worksheets(5).Range("M1") < 7 Then Worksheets(5).Activate End If If 0 <= Worksheets(6).Range("M1") < 7 Then Worksheets(6).Activate End If If 0 <= Worksheets(7).Range("M1") < 7 Then Worksheets(7).Activate End If If 0 <= Worksheets(8).Range("M1") < 7 Then Worksheets(8).Activate End If If 0 <= Worksheets(9).Range("M1") < 7 Then Worksheets(9).Activate End If End Sub

  • Excel マクロ ifステートメントでシート保護を判別するには?

    こんにちは。 Excelでマクロを作成していますが、どうしても解らないので質問しました。 解る方いましたら回答よろしくお願いします。 ifステートメントで「シート保護」の有無を条件にしたいのですが、うまくいきません。  if activesheet.unprotect = true then   処理1  else   処理2  end if としていますが、「シート保護」の有無に関係なく、常に処理2となってしまいます。

  • マクロでリンクを更新しないで開く

    エクセル2013です。 リンクを更新しないで開く ネットで調べて Workbooks.Open Filename:="C:\作業用フォルダ\更新データ名.xls", UpdateLinks:=0 に行きつきました。 私の構文は MsgBox "編集したいデータを選択してください", vbInformation, "手順" MsgBox "ファイル選択画面を開きます", vbInformation, "ファイル選択" 選択ファイル = Application.GetOpenFilename If 選択ファイル = False Then MsgBox "中止します", vbExclamation Exit Sub 'キャンセル選択時 Else Workbooks.Open 選択ファイル End If というふうに、作業者が開くbookを選択する為、対象のドライブが固定できません Workbooks.Open Filename:="C:\作業用フォルダ\更新データ名.xls", UpdateLinks:=0 をどのように応用すればいいかわからず いろいろ試したのですが駄目です。 (上記構文中のcはcドライブの事だと思っています?) とりあえず★の部分を2行追加して MsgBox "編集したいデータを選択してください", vbInformation, "手順" MsgBox "ファイル選択画面を開きます", vbInformation, "ファイル選択" 選択ファイル = Application.GetOpenFilename If 選択ファイル = False Then MsgBox "中止します", vbExclamation Exit Sub 'キャンセル選択時 Else Workbooks.Open 選択ファイル Application.AskToUpdateLinks = False '★メッセージを表示しない ActiveWorkbook.UpdateLinks = xlUpdateLinksNever '★リンクの自動更新を行わない End If のようにしてみたのですが ブック内の一部のリンクはすぐに更新できません 「更新」「接続」 と警告メッセージが出てしまいます。 アドバイスをお願いいたします。

  • printStackTrace()メソッドに関する疑問

    お世話になります。 Javaの例外処理等で使用されるprintStackTrace()メソッドに関する疑問なのですが・・・。 AppletやServletのプログラム内の例外処理で使用されるprintStackTrace()メソッドは通常例外が発生すると、ログ等に例外メッセージが表示されますが、printStackTrace()メソッドで取得した例外メッセージをHTMLで画面表示させる事は(エラーメッセージや例外メッセージが発生した時にそのメッセージをHTMLで画面表示させる様にするという処理を行う場合)出来るのでしょうか? getMessage()メソッドでは上手くメッセージを取得して変数に格納し、HTMLでメッセージを画面表示させるようには出来るのですが、printStackTrace()メソッドでは上手く出来ません。 ご存知の方がいらっしゃいましたら、是非ご教授お願い致します。

    • ベストアンサー
    • Java
  • エクセルファイルをフロッピーに保存するマクロで教えて下さい

    今、フロッピーにファイルを保存する為のマクロを創っているのですが ワイルドカードの使い方を教えて下さい ここから***** Sub フロッピー保存() ' ' Dim fNAME As String fNAME = ActiveWorkbook.Name 'アクティブなブックのファイル名を取得 'ファイルが新規に作成された場合の処理(book1,book2等と成っている場合) If fNAME = "Book*" Then fNAME = Application.InputBox(prompt:="新規ファイルですね。ファイル名を入力して下さい", _          Title:="新規ファイル入力", Type:=2) Else ActiveWorkbook.Save End If '取得したファイル名でフロッピーディスクに保存 ActiveWorkbook.SaveAs Filename:="A:\"&fNAME, _    FileFormat:=xlNormal, _ Password:="",WriteResPassword:="",ReadOnlyRecommended:=False, _ CreateBackup:=False End Sub ここまで***** >>'ファイルが新規に作成された場合の処理(book1,book2等と成っている場合) >> If fNAME = "Book*" Then この、If fNAME = "Book*" Then が有効に働いていないみたいなんです。 「ワイルドカード・・・* や ? はマクロではどの様な書式が正しいのでしょう それと、エラー処理なんですが InputBoxメソッドでキャンセルやファイル名を入力しないで「OK]が押された 場合の処理、又フロッピーが挿入されていなかった場合などの エラー処理の対処法を教えて下さい

  • エクセルマクロでファイルを作れません

    ワークブックを開く時に自動的にxmlファイルを作るマクロを組みました。 しかし、そのマクロを組んだPCでは正常にxmlファイルが作成されますが、 他のPCで試したらxmlファイルが作成されずにエラーになりました。 その【xmlファイルが作成されなかった】理由がわかりません。 例えば、PCのセキュリティで、マクロによるファイルの読み書きの動作が弾かれていたりするのでしょうか。 以下、そのマクロの本文です。 解決の手がかりだけでも掴めましたら教えていただくと嬉しいです。 Private Sub Workbook_Open() ' ワークブックを開く時のイベント 'Cドライブ直下に「あああ.xml」ファイルが存在すれば削除 If Dir("C:\あああ.xml") <> "" Then Kill "C:\あああ.xml" Else End If 'xmlファイルを作成   ' XMLファイル保存先の指定 Dim iFileNum As Integer iFileNum = FreeFile Dim SaveFileName As String SaveFileName = "C:\あああ.xml" Open SaveFileName For Output As #iFileNum  '←ここでエラーになります!! ''xmlファイル本文の作成 Print #iFileNum, "<?xml version=""1.0"" encoding=""UTF-8""?>" Print #iFileNum, "<markers>" Print #iFileNum, "</markers>" '後処理 If iFileNum > 0 Then Close #iFileNum End Sub

  • 《エクセルVBA》「他の人が該当ファイルを使用中の場合」の処理

    大変お世話になっています。 サーバ上にあるファイルを更新するVBAを作りました。 該当ファイルはあらかじめ閉じられていて、オープンして処理終了後保存して閉じるという仕様になっているのですが、そのファイルは複数人が使用するもののため、「閉じている」ことを前提としたVBAにもかかわらず、ファイルが開いている可能性があります。 そこで、一番最初に「ファイルが開かれていたら何もせずに終了する」という判断をしたいのですが、いい方法はあるでしょうか。 過去の質問を検索したところ、 If .ReadOnly Then ’処理を行わない Else ’処理を行う End If という書き方があるようですが、VBAを使わない場合でも「他の人が使用中です。読み取り専用で開きますか?」というメッセージが自動で出てしまうため、これを出さずに強制終了できると嬉しいです。 達人の皆様、どうかお知恵をかして下さいませ。

専門家に質問してみよう