Excel VBAファイル属性に関する質問です

このQ&Aのポイント
  • 一つのxlsファイルを複数のユーザーで開いた場合、二人目以降は読み取り専用になってしまいます。しかし、二人目以降にシート上に「読み取り専用です」というラベルを貼りたい場合、どのようにすれば良いでしょうか?
  • 現在、ファイルオープン時にVBAコードを使用してラベルを表示していますが、ファイル属性をアーカイブ属性のままで二人目のユーザーが開いたファイルにラベルを貼り付けたいです。どのようにすれば実現できるでしょうか?
  • Excel 2003を使用しており、ファイル属性に関する問題が発生しています。一つのxlsファイルを複数のユーザーが開いた場合、二人目以降は読み取り専用になってしまいますが、その二人目以降にシート上に「読み取り専用です」というラベルを表示したいです。ファイル属性をアーカイブ属性のままでラベルを表示する方法を教えてください。
回答を見る
  • ベストアンサー

Excel VBA ファイル属性に関しての質問です。

ファイル属性に関して質問をしたいのですが、 一つのxlsファイルを何人かのユーザーで開いたときに、二人目以降は 「読み取り専用」となり、変更などをできない設定になっていて、デフォルトから弄ってはいません。 この二人目以降にシート上に「読み取り専用です」というラベルを貼りたいのですが、どうしたらできますか? 今現在は ファイルオープン時に、 dim Myattr as integer Myattr=Getattr(~~~) If MyAttr = 1 Or MyAttr = 33 Then Worksheets("sheet2").la_Yomitori.Visible = True end if となっています。 ファイル属性をアーカイブ属性のままで、二人目が開いたファイルにラベルを張り付けたいのです。 今の状態ですと、二人目のユーザーがファイルを開いた時ExcelWindowの名前部分に読み取り通知としか書いていなく、なおかつファイル属性の値をしらべても、アーカイブ属性のままでした。 わかりずらい質問で申し訳ありませんが、よかったらご指導お願いします。 尚、Excelは2003です。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。ReadOnly プロパティーは使えませんか? If ThisWorkbook.ReadOnly Then   MsgBox "読み取り専用モードで Open しています." End If

usio_sjs
質問者

お礼

ありがとうございます! 今確認してみたところ、ちゃんと動きました。 数値での認識しようとしてたもので、この方法は全く試していませんでした。 本当にありがとうございます。

関連するQ&A

  • ファイルの属性について

    ファイルのプロパティーのところで 属性にアーカイヴ、隠しファイル、読み取り専用 の3つがありますが これらの違いは何ですか? 設定を変えるとどうなるのですか?

  • インデックス属性って何ですか?

    細かいことなのですが最近、ファイルの属性について気になっています。 アーカイブ属性、暗号化属性、隠しファイル属性、インデックス属性、システム属性、圧縮属性、読み取り専用属性、...etcのことです。 このうち特にインデックス属性についてなのですが、使い道がいまいち分かりません。ファイルのプロパティ→全般→詳細設定→”検索を早くするためにこのファイルにインデックスをつける”のチェックボックスのことです。 始めからチェックしてあるようなのですが、外すと何か悪影響があるのでしょうか? また、何に使用され、どういう使い道がありますか?

  • EXCELについての質問です。

    お世話になります。 現在エクセルに「入力」,「報告書」,「報告書2」の3枚のシートを置き,「入力」シート上のボタンに以下のマクロを登録しています。 Sub 報告書印刷() Application.ScreenUpdating = False Msg = MsgBox("報告書を印刷します。", vbOKCancel) If Msg = vbCancel Then Exit Sub End If Worksheets("報告書").Visible = True Worksheets("報告書").Select Worksheets("報告書").Range("J10").Value = 1 Application.Calculate Worksheets("報告書").PrintOut Worksheets("報告書").Visible = False Worksheets("入力").Select End Sub ボタンをクリックすることにより,報告書は印刷できますが,それに加えて, もし,「入力」シートのセルA1が空白ではない場合(※何らかの文字が入力されている場合)には,「報告書2」シートも印刷される・・ というような条件を付加した構文にしたいと考えております。 知識不足のためかなり背伸びをした質問をしていますが,どなたかご教示いただければ幸いです。 どうかよろしくお願いいたします。

  • エクセルVBAで別シートにコピー貼り付け

    VBA初心者です。下記のようにプログラムしましたがうまくいかなくて困ってます。どなたかお力をお貸しください。内容としましては輸入Partsのシートからコピーして商品内容確認のシートのセルB17に貼り付けたいです。輸入Partsシートで3列目の空白を探し同じ行の1列目をコピーします。商品内容確認のシートのセルB17にはカーソルは動いているようですが貼りつきません。 Private Sub 商品内容確認2_Click() If MsgBox("商品内容確認へ移動しますか?", 33, "移動の確認") = 2 Then MsgBox "処理を中止します。" Range("A2").Select Exit Sub End If Dim Line As String Dim Maxrow As String Worksheets("輸入Parts").Select Line = 2 Do Until Cells(Line, 1).Value = "" On Error Resume Next If Cells(Line, 3).Value = "" Then Cells(Line, 1).Copy 'コピーする Maxrow = Worksheets("商品内容確認").Range("B17").End(xlDown).Row + 1 Worksheets("商品内容確認").Range("B" & Maxrow).PasteSpecial Paste:=xlPasteValues '値を貼り付け End If On Error GoTo 0 '次の行に移り最後の行まで検索 Line = Line + 1 Loop Worksheets("商品内容確認").Visible = True Worksheets("商品内容確認").Select Worksheets("商品内容確認").Range("B6").Select Worksheets("商品内容確認").輸入Partsシート2.Visible = True Worksheets("商品内容確認").輸出Partsシート2.Visible = False Worksheets("輸入Parts").Visible = False End Sub

  • 読み取り専用、隠しファイル、アーカイブとは

    属性ところで、読み取り専用、隠しファイル、アーカイブという区分けがでてきましたが、どういう意味でどうちがうのでしょうか?できることできないことなどを教えてください。

  • excel vbaで助けてください

    excel2000を利用しています。 ファイルA (sheet1-グラフデータ、sheet2-グラフ)が、あります。 Vbaで、このファイルシートをすべて選択して、コピーして、名前をつけて保存しています。 この時に、作られる ファイルB (sheet1-グラフデータ、sheet2-グラフ)ですが、グラフの元データが、ファイルAになってしまいます。 下記、記述をどのように修正すれば、ファイルBのグラフの元データを、ファイルAでなく、ファイルBにすることが出来るでしょうか。 ご教授お願いいたします。 Thisworkbook.Worksheets.Copy SaveFilePath = Application.GetSaveAsFilename(mypath,"ExcelFile(*.xls),*.xls") If SavefilePath <> "False" Then ActiveWorkbook.SaveAs Filename:=SaveFilePath Else End if

  • excel2000のvbaハイパーリンク

    excel2000のvbaユーザーフォームで ラベルをクリックしたら、ハイパーリンクで別のファイルを開くのですが、リンクが切れていた場合、リンクが切れているという風に警告してもらいたいです。 リンクさせるアドレスを、sheet1のA1セルに格納していますが、下記のままだと、リンク切れしていたばあい、エラーとなってしまいます。Private Sub テストラベル_Click()ThisWorkbook.FollowHyperlink Address:=Worksheets(”Sheet1”).Range("A1").TextEnd Subどう修正すればいいでしょうか?

  • vba ;制御

    下記でhakkenn = 1 '******** のところから次は next iの直前にいくようにプログラムをランさせるにはどう記述すればよいか。 よろしくお願いします。 For i = 3 To d hakken = 0 For ui = CELL_S To (CELL_E - CELL_S + 1) If Worksheets("sheet2").Cells(i, "D") = Worksheets("user").Cells(ui, "A") Then Worksheets("user").Cells(ui, ichi) = "◎" hakkenn = 1 '******** Else End If Next ui If hakkenn = 1 Then Else Worksheets("user2").Cells(ui, "D") = Worksheets("sheet2").Cells(i, "D") End If Next i

  • excel vba のエラー原因が分かりません

    データ入力シート「Hit Data] データ表示シート「User Sheet」 とあります。 データ表示シート「User Sheet」に「次へ」「前へ」「最初へ」「最後へ」とボタンをつくり、データ入力シート「Hit Data]から、都度データを呼び出せるようにするプログラムをとあるサイトを参考にして作成しましたが、エラーが出てしまいどうしてもうまくいきません。 どこに問題があるのか見ていただけないでしょうか? '以下標準モジュールのプログラムです Public trg As Range Sub Saisyo()  Set trg = Worksheets("Hit Data").Range("A3")  Call Tenki End Sub Sub Saigo()  Set trg = Worksheets("Hit Data").Range("A60000").End(xlUp)  Call Tenki End Sub Sub Mae()  If trg.Row >= 4 Then   Set trg = trg.Offset(-1, 0)   Call Tenki  Else   MsgBox "これより前のレコードはありません"  End If End Sub Sub Tsugi()  If trg.Row < Worksheets("Hit Data").Range("A60000").End(xlUp).Row Then   Set trg = trg.Offset(1, 0)   Call Tenki  Else   MsgBox "これより後ろのレコードはありません"  End If End Sub Sub Tenki()  Worksheets("User Sheet").Range("D9").Value = trg.Offset(0, 0)  Worksheets("User Sheet").Range("D10").Value = trg.Offset(0, 1)  Worksheets("User Sheet").Range("D11").Value = trg.Offset(0, 2)  Worksheets("User Sheet").Range("D12").Value = trg.Offset(0, 3) End Sub '以下 User Sheet"のシートモジュールに記載されたプログラムです。 Private Sub Worksheet_Activate() Call Saisyo End Sub '表示されるエラーの内容 'saisyo・・・アプリケーション定義またはオブジェクト定義のエラーです。 'saigo・・・同上 'mae・・・オブジェクト変数またはWithブロック変数が設定されていません 'tugi・・・同上

  • エクセルVBA ユーザーフォームの表示内容を選択条件によって変更する

    ExcelVBA初心者です。 ユーザーフォーム1でsheet1を選択した場合→次のユーザーフォーム2ではsheet1の内容を、 sheet2を選択した場合→sheet2の、sheet3を選択した場合→sheet3の 内容をそれぞれキャプションとして表示したいのですが、 なかなか上手く出来ません。 Private Sub UserForm_Initialize() If UserForm1.ComboBox1 = Worksheets("Sheet1").Select Then UserForm2.Caption = Worksheets("Sheet1").Range("B3").Value ElseIf UserForm1.ComboBox1 = Worksheets("Sheet2").Select Then UserForm2.Caption = Worksheets("Sheet2").Range("B3").Value Else UserForm1.ComboBox1 = Worksheets("Sheet3").Select UserForm2.Caption = Worksheets("Sheet3").Range("B3").Value End If End Sub としてみたのですが、どのシートを選択してもsheet3の内容が ユーザーフォーム2のキャプションとして表示されてしまいます。 どのようにしたら良いでしょうか? よろしくお願い致します。

専門家に質問してみよう