マンガでよめる痔のこと・薬のこと

Excelで原紙として一つファイルを作ったのですが、
それを上書きできないようにはできないでしょうか。

原紙はそのままで、
名前を付けて保存は構わないのですが、上書きされてしまうと
原紙がめちゃくちゃになってしまうので困っています

何がいい方法はないでしょうか

このQ&Aに関連する最新のQ&A

A 回答 (3件)

ツール→オプション→セキュリティで設定してもいいし、xlsを閉じてそれ自身右クリック→読み取り専用にチェック入れとけばもっと簡単と思いますが。

    • good
    • 7
この回答へのお礼

ありがとうございます。

実際に試してみて、こんなに簡単にできるとは
驚きでした。

早速、上書きしてほしくないファイルを全て読み取り専用に
したいと思います。

お礼日時:2007/04/04 14:03

エクスプローラでファイルのプロパティの


属性を【読み取り専用】にチェック入れておけば上書きはできません。
    • good
    • 6

テンプレートにしてしまえば?


拡張子を XLS から XLT にしておくだけです。
開くと自動的にファイル名に添え字が付きます。例 ファイル名1.XLS
テンプレートとしては上書きできません。
    • good
    • 5
この回答へのお礼

ありがとうございます。

Excelにはそんな機能もあるのか、と
ひとつ賢くなりました。

お礼日時:2007/04/04 14:06

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCELマクロ 保存禁止させるには?

EXCELのファイルを閲覧のみにしたいので、
[上書き保存]、[名前をつけて保存]等を禁止にするため、
以下のようにマクロを作成しようとしました。

EXCELマクロ、Workbook_BeforeSaveで、Cancel=Trueのコードを追加。

しかし、このマクロを入れるとこのブック自体が保存できないんです。
どうすればよいでしょう?

Aベストアンサー

> やろうとしている、「Workbook_BeforeSaveで、Cancel=True」は、
> もともと前任者入れていたマクロなので、保存する方法があるはず
> なんでしょうけど・・・

以下の手順なんていかがでしょうか。

1. Cancel=Falseと書いておいて、そこにブレークポイントを設定する
2. 保存操作をすると、Cancel=Falseで一時停止する
3. F8キーを一度押す
4. Cancel=FalseをCancel=Trueに書き換え、ブレークポイントを解除する
5. F5キーを押して、保存操作を継続する

Qエクセルで保存の制限できますか?

エクセルで「名前を付けて保存」という動作を禁止させたいのですが、VBAで可能でしょうか?もしくは制限を設定できるソフトなどありましたら教えてください。

Aベストアンサー

WorkbookのBeforeSaveイベントプロシージャにSaveAsUIという引数があります。
名前を付けて保存ダイアログが出る時にこの引数にTrueがセットされるので
以下のような感じで「名前を付けて保存」を禁止することは可能だと思います。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then Cancel = True
End Sub

ただ、どのようなわけで名前を付けて保存を禁止したいのかわかりませんが、マクロを無効にして開いたり、エクスプローラー上でコピーしてファイル名の変更をすれば、簡単に回避出来るのでこれだけではあまり意味がないような気がします。

Q読取専用で開いたEXCELの別名保存も禁止するには?

ACCESS VBAでEXCELファイルを読取専用で開いています。
読取専用でも別名での保存ができてしまうのですが、
一切保存できないようにすることは可能でしょうか?

ご存じの方、教えてください。
よろしくお願いします。

Aベストアンサー

私はエクセルファイルを保存されたくないときは、以下のようなマクロをエクセルのThisWorkbookにいれてます。
ACCESS VBAから開いてという条件ではやったことがないので、間違っていたらすみません。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
End Sub

ちなみに、マクロが有効な状態で、上記を入れてしまうとマクロも保存できませんので、編集はマクロ無効にて。

QExcel2010 ファイルの上書禁止について

Excel2010を使用しています。
共有ファイルで内容を変更されないよう上書禁止にするには
どうすればいいのでしょうか。

ファイルを最終版にしたり、読み取り専用の設定では、
開いた人も解除できてしまうようなのですが、
管理者しか更新できないようにする方法はあるのでしょうか。

よろしくお願いします。

Aベストアンサー

書き込みパスワードを設定すればいいと思います。

参考URL:http://www.fmworld.net/cs/azbyclub/qanavi/jsp/qacontents.jsp?PID=1409-6340

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QエクセルVBA 上書き保存禁止と強制終了

以下のようなVBAを作成したいのですが、糸口が見つかりません。
ヒント等や解説webの紹介でもかまいませんのでお願いいたします。

共通で使用するエクセルファイルがあります。

(1)ファイルの上書き保存を禁止したい
・今あるフォルダ内での上書き保存のみ禁止としたいです
・別フォルダに一度でも保存していた場合の上書き保存はOKです
つまり共通ファイルを上書きするのはダメですが、自PC等に名前をつけて保存等をしていた場合の上書き保存はOKとしたいです

(2)ファイルを開いている時間を5分と制限したい(5分経過したら強制終了)
・今あるフォルダ内での時間制限としたいです
・別フォルダに一度でも保存していた場合は時間制限なしとしたいです
つまり共通ファイルを開きっぱなしなのはダメですが、自PC等に名前をつけて保存等をしていた場合は制限なしとしたいです

個々のVBAは多少webなどでわかるのですが、こうだったらこうという記述がよくわからずにおります。
お手数をおかけ致しますが、よろしくお願い申し上げます。

Aベストアンサー

No3です。

No2様の例をそのまま利用するなら、こんな感じ

Private Sub Workbook_Open()
Const filePath = "\\......"      '//共用ファイルのパス
If ThisWorkbook.Path <> filePath Then Exit Sub  '//パスが違う場合は終了
Application.OnTime Now + TimeValue("00:01:00"), "Macro1"
End Sub

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング