EXCEL VBAで 名簿を作成しました。

 名簿はMOに 保存しました。
保存したファイルを デスクトップに コピーしました。
しかし、ファイルを開いても、マクロがうまく働きませんでした。

「同じファイル名のファイルがある・・・」のようなメッセージが出てしまいます。

 1台のコンピューターだけでなく、複数で使えるようにするには、VBAで作
成したファイルはどのように保存すればよいのでしょうか。教えてください。

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

A 回答 (3件)

方法としては何種類かありそうですが


データベースファイルと操作ファイルに分ける方法を提示します。
名簿をデータベースファイルとして、VBAマクロを含まないようにします。
データベースファイルの型式はEXCELのシートそのものでも構いませんし、
MDBファイル等にしてもいいでしょう。テキストファイルでもいいです。
次に、操作用のEXCELファイルを別に作り、そのファイルにデータベース
ファイル(名簿)の読み込み、書き込み保存を自動化させるVBAマクロを
組みます。この操作用のEXCELファイルを”読みとり専用”にすると、複数
のユーザーが同時に使用可能です。また、データベースファイルが重複して
開かれることがないように、読み込み時、書き込み保存時以外はシートを
閉じておくようにマクロを組みます。滅多に起こらないことですが、
読み込み時、書き込み保存時が重複した場合はエラー処理で逃げます。

本来は、このような面倒な処理はMicrosoft Access+データベースファイル
が得意かもしれません

この回答への補足

  ありがとうございました。
  ひとつで、全部やろうとしたのが いかなかったのでしょうか。マク
 ロを含むファイルは 別にしてつくると いいのですね。
  データファイルをつくることと、
  操作用ファイルは 別につくり読み取り専用にすることが大事なこと
 だったのですね。

 Microsoft Access の方が 得意なんだろうな思っていましたが、
 Excelなら だれにでも 使えそうかなと 思って 取り組んでいます。


 前途多難のようですが、少しずつ作ってみようと思います。
 ありがとうございました。

補足日時:2001/07/26 22:04
    • good
    • 0
この回答へのお礼

TTakさん
 ありがとう ございました。

 まだ初心者で、こうすれば こうなる。といった予測がつきません。
流れが つかめるように なりたいです。

 おしえて いただいたことを 参考にして できるところから
はじめようと 思います。

お礼日時:2001/07/30 22:44

「名簿」を新たに作成して保存するか、開くか、のマクロなんでしょうね。


自分で自分を作り出そうとしている、または自分で自分を開こうとしている
ことが原因と思います。

最初に作成したブックはパス(フォルダまたはディレクトリ)が異なるため
同じ名称で作成しても「別ファイル」なので問題が無かったのでしょう。

起動する側の「名簿」をリネームしてから動作させて正常に動けば
このことが確認できると思います。
    • good
    • 0

マクロ付きxlsデータを作成してコピーしても問題は無いと思います。


(「原本」を作成後、コピー・リネームしての使用をよくやってます)

VBAで生成した「名簿」ファイルなのでしょうか?
(「名簿」自体にはマクロを含まない)

それとも何がしかのマクロを含む「名簿」ファイルなのでしょうか?

この回答への補足

ありがとうございました。
いそぎでは ないのですが、VBAではじめてつくりました。
マクロを含む「名簿」です。

エラーメッセージは 以下のとおりです。
 ○○名簿.xlsと同じ名前のファイルが既に
 開いています。保存先が別のフォルダでも、
 同じ名前のファイルを同時に開くことはできません。
 2つめのファイルを開く場合は、一方のファイルを閉じるか、
 またはいずれかのファイルの名前を変更してください。
よろしくお願いします。

補足日時:2001/07/26 21:57
    • good
    • 0

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

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

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

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

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3コピー元ワークシート3

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = Workbooks.Add

'ここからが実際のコピー処理です。
'単純に3回コピーメソッドを呼び出して3回コピーしています。
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)

End Sub

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = W...続きを読む

QVBA 新規ファイルを元ファイルと同じ場所に保存する方法

こんにちは。VBA初心者です。
エクセルファイルのシートを、いろいろ行を増やしたり計算を自動にするようにして、
最後にテキスト形式にするためのマクロをつくっております。

元のエクセルファイルの対象のシートをコピーして、新しいファイルを作成しペースト→保存→ファイルを閉じるところまでなんとかできました。
現在、下記のコードで新しいファイルは「マイドキュメント」に保存されていますが、元のエクセルファイルと同じ場所に保存したいのですが、どのようにコードを書けばよろしいでしょうか。
教えていただけますと幸いです。宜しくお願い申し上げます。

Sheets("TXT").Copy
Sheets("TXT").SaveAs FileFormat:=xlCurrentPlatformText, Filename:="今月.txt"
With Workbooks("今月.txt")
.Saved = True
.Close

Aベストアンサー

ご希望かどうか?
Sheets("TXT").SaveAs FileFormat:=xlCurrentPlatformText, Filename:=ThisWorkbook.Path & "\今月.txt"
として試してみてください。
以下、参考です。

参考URL:http://www.moug.net/tech/exvba/0060050.htm

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3ワークシート

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめる。
 新規ブックのオープンをtestwriteを呼ぶ前に1度だけ行い、
 testwriteの中ではその新規ブックに対してシートを追加していく。
 そしてtestwriteの処理が全部終わったら、
 新規ブックの全シートを1度に「記録シートYYYY/MM/DD.xls」にコピーする。

それでも駄目でしたら、以下の回答No.1を試してみてください。
http://oshiete.goo.ne.jp/qa/1822561.html

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめ...続きを読む

Qエクセルマクロでファイルを保存して閉じるときにファイル名に変数を付加して保存したいです。

エクセルマクロでファイルを保存して閉じるときにファイル名に変数を付加して保存したいです。

具体的にはファイルが閉じられるときに固定した名称の後ろに日付などを入れた形で保存したいと考えています。
どのように書けばよいのかわからなくて困っています。
教えてください。
宜しくお願いいたします。

Aベストアンサー

 yurarin99 さんのスキルにもよろうかと存じます。

1)先ず、お望みの名前でブックを保存するという動作を、普通に[新しいマクロの記録] を採ってみてください。
 ここで、ファイル名にスラッシュ「/」を使うことはできませんので、「(09/11/13)」というような形式で日付文字列を付加することはできませんね。スラッシュを省くかアンダーバーやピリオドなどのお好みの文字に換えて保存なさってください。

2)次に、上記で保存したマクロのコードの中で「(09_11_13)」の部分を
(" & Replace(Date, "/", "") & ")

(" & Format(Date, "yy_mm_dd") & ")
などに書き換えてマクロを実行するとお望みのことが達成されます。

3)自ブックでの操作でしたら、「Workbook_BeforeClose」イベントなどに記載しておけば、終了時に、自動的に保存できます。しかし、保存済みブックに逐一マクロが付随しますので、他のブックにマクロを記載しておいて、保存するブックをアクティブにしたタイミングで「ActiveWorkbook」を保存するのが好ましいかとも存じます。

 yurarin99 さんのスキルにもよろうかと存じます。

1)先ず、お望みの名前でブックを保存するという動作を、普通に[新しいマクロの記録] を採ってみてください。
 ここで、ファイル名にスラッシュ「/」を使うことはできませんので、「(09/11/13)」というような形式で日付文字列を付加することはできませんね。スラッシュを省くかアンダーバーやピリオドなどのお好みの文字に換えて保存なさってください。

2)次に、上記で保存したマクロのコードの中で「(09_11_13)」の部分を
(" & Replace(Date, "/",...続きを読む

QEXCELのVBAでシートコピーをしたとき元のマクロを削除するには?

VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか?
どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。
シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?

Aベストアンサー

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け
Sheets("Sheet1").Name = "コピー"
Application.CutCopyMode = False
Application.SheetsInNewWorkbook = sc
ActiveWorkbook.Close
ThisWorkbook.Activate
End Sub

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け...続きを読む

QExcelで作ったファイルをCDへ保存中にエラーがあり保存できず 既存のファイルも破損した可能性があ

Excelで作ったファイルをCDへ保存中にエラーがあり保存できず 既存のファイルも破損した可能性があるとの表示がでました。
その後 やはりCDに入っていたファイルが見当たらなくなってしまったのですが 既存のファイルはもう取り出す事はできないでしょうか?
あまり詳しくないので 宜しくお願いします

Aベストアンサー

もっと早く書けばよかったのですが、サルベージ(ファイルの救出)は時間が経てば経つほど、期待薄になってしまいます。

既存のファイルは、私は、Gray Utilities の「ファイルの復元」を使っています。
ダウンロードが少しややこしいです。

ここで、このユーティリティ(Free)をダウンロードします。
http://www.filepuma.com/download_glary_utilities_254/

展開しても、スパイ系のツールは入っていません。

QVBAのワークシートの追加とコピーなんですが。

VBAのワークシートの追加とコピーなんですが。


sheet1の原紙をすべてコピーして、

新しくワークシートを追加してそのシートに貼り付けるプログラムを

教えてください。

Aベストアンサー

With ActiveWorkbook
  aaa = .Sheets("Sheet1").Cells(9, 4).Value 'aaaは社員
  bbb = .Sheets("Sheet1").Cells(9, 5).Value 'bbbは4月
  .Sheets("Sheet1").Copy After:=.Sheets(.Sheets.Count)
End With
ActiveSheet.Name = aaa & bbb

QExcel/VBAのファイル保存

いつもここでは大変お世話になっています。

以下のように名前をつけて保存をしているのですが、
同名のファイルがあった場合でも上書き確認せずに上書きをさせる方法を教えて下さい。
お願いします。

ActiveWorkbook.SaveAs Filename:= _
"\\PC名\ディレクトリ名\ファイル名.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

Aベストアンサー

Application.DisplayAlerts = False

マクロ記述

Application.DisplayAlerts = True

で確認表示されません。

QEXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法

 EXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法
 普通のやり方では、セルの数字、値だけで、通常は、中身の重要な"関数式"であったり、VBA等のプログラムまで、コピーされることは、ありませんので、そこまで、出来る方法を教えて下さい。

Aベストアンサー

コピー元のBookとコピー先Bookをどちらも開いて
Excel画面上に並べます(左右に並べる方が作業しやすいと思います)

Ctrlキーを押しながら、コピーしたいシートのタブ部分を
クリック長押しすると、+マークと▲マークが出てきます。
マークが出てきたら、新しいBookにドラッグ&ドロップ で
シートコピーが出来ます。

全く同じシートがコピーされ、マクロもコピーされます。

QエクセルVBAでファイルを別で保存する

ファイルA1,A2,・・・A9,b1,b2・・・と百個くらいファイルがあって、
それを別フォルダにひらがなでわかりやすい名前をつけて保存したいです
A1は商品○○、A2は商品▲▲、・・・というような感じです。
月初にこの作業を行っています。
いつもa1~全部そろっているわけではなくA2がなかったり、B5がなかったりいろいろです。
毎月の作業で面倒なので自動化したいのですが
どのようにしたらいいのでしょうか?

1個1個ファイルを開いて、名前をつけて保存する、という作業で組んでみましたが
ファイルがないところでエラーになってしまいました。
また、1個1個ファイルを開いて、保存、という作業を100回位繰り返して書いてみたんですが
もっとスマートな書き方はあるんでしょうか?

よろしくお願いいたします。

Aベストアンサー

エラーで閉じちゃうのは、強制終了されるって事?
皆さんの回答で問題は無いと思うのですが、、、
原因は別の所にあるのでは?

まずはシンプルな環境でテストしましょう。

1.適当なフォルダを作り、Book1.xls と Book3.xls を置きます。
2.新規ブックに下記のマクロを記述して上記と同じフォルダに
  保存(必須)します。(ファイル名は Test.xls とする)

'-------------------------------------------------------------
Sub Test_File_Copy()
Dim myPath As String, myFolder As String

 myPath = ThisWorkbook.Path & "\"
 myFolder = myPath & "Temp"

 'コピー格納用のフォルダを作成
 If Dir(myFolder, vbDirectory) = "" Then MkDir myFolder

 For i = 1 To 3
  If Dir(myPath & Cells(i, 1)) <> "" Then
    FileCopy myPath & Cells(i, 1), _
       myFolder & "\" & Cells(i, 2)
  End If
 Next i

End Sub
'-------------------------------------------------------------

3.Test.xls の Sheet1に下記のように記述してマクロを実行

A列       B列
Book1.xls   Ren1.xls
Book2.xls   Ren2.xls
Book3.xls   Ren3.xls

4.正常に行けば、フォルダ内に Temp フォルダが作成され、
  Book1.xls と Book3.xls が Ren1.xls と Ren3.xls と言う
  名前で Tempフォルダに格納されます。

上手くいかないようなら、ファイル名 や 既存ソースなどを提示
しましょう。

エラーで閉じちゃうのは、強制終了されるって事?
皆さんの回答で問題は無いと思うのですが、、、
原因は別の所にあるのでは?

まずはシンプルな環境でテストしましょう。

1.適当なフォルダを作り、Book1.xls と Book3.xls を置きます。
2.新規ブックに下記のマクロを記述して上記と同じフォルダに
  保存(必須)します。(ファイル名は Test.xls とする)

'-------------------------------------------------------------
Sub Test_File_Copy()
Dim myPath As String, myFolder As String...続きを読む


人気Q&Aランキング

おすすめ情報