Excel97のVBAでマクロを作っています。

1.xlsというファイルを、2.prn(スペース区切りテキスト)で保存し、再度1.xlsというファイルで元のファイルに上書き保存したいのですが、1というファイル名を任意に変更したいので、保存形式とファイル名を元のファイルと同じにして元のファイルに上書きする、ということは可能でしょうか?

A 回答 (3件)

prnで保存した時に、シート名が変わってしまいました。

以下のように変更すれば、シート名を元に戻します。

Sub SaveMe()
  Dim myPath As String '最初のxlsのパス
  Dim myFileName As String '最初のxlsのファイル名
  Dim mySheetName As String '保存するシート名(***追加***)
  Dim prnFileName As String 'prnファイル名

  prnFileName = "2.prn"

  myPath = ThisWorkbook.Path
  myFileName = ThisWorkbook.Name
  mySheetName = ActiveSheet.Name '(***追加***)

  'メッセージを出さない
  Application.DisplayAlerts = False
  'prnでディスクトップに保存
  ActiveWorkbook.SaveAs Filename:="C:\WINDOWS\デスクトップ\" & prnFileName, _
                          FileFormat:=xlTextPrinter
  ActiveSheet.Name = mySheetName '(***追加***)
  'xlsで最初のドライブ・フォルダに保存
  ActiveWorkbook.SaveAs Filename:=myPath & "\" & myFileName, _
                          FileFormat:=xlNormal
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
おかげで完成しました。

お礼日時:2001/12/25 19:39

『自分を別名(prn)で保存し、かつ元のフォルダに元の名前(xls)で保存する』ようにしてみましたが・・・。

こういうことでしょうか?

Sub SaveMe()
  Dim myPath As String '最初のxlsのパス
  Dim myFileName As String '最初のxlsのファイル名
  Dim prnFileName As String 'prnファイル名

  prnFileName = "2.prn"

  myPath = ThisWorkbook.Path
  myFileName = ThisWorkbook.Name

  'メッセージを出さない
  Application.DisplayAlerts = False
  'prnでディスクトップに保存
  ActiveWorkbook.SaveAs Filename:="C:\WINDOWS\デスクトップ\" & prnFileName, _
                          FileFormat:=xlTextPrinter
  'xlsで最初のドライブ・フォルダに保存
  ActiveWorkbook.SaveAs Filename:=myPath & "\" & myFileName, _
                          FileFormat:=xlNormal
End Sub
    • good
    • 0

こんにちは



この質問はNo.188673と何が違うのでしょうか?
もしうっかり2重投稿とかいうので無ければ、もう少し具体的な問題点を書いてください。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=188673

この回答への補足

説明不足で申し訳ありません。

「任意ディレクトリの1.xls」を「デスクトップの2.prn」として保存した為、元のファイルに上書きするには元のディレクトリと元のファイル名を指定もしくは取得する必要があると思います。
そこで、次の2点の問題点があります。
(1)元のディレクトリを指定(取得)できない
>一旦デスクトップに保存した為、“ThisWorkbook.Path”ではデスクトップを取得してしまう
(2)元のファイル名を指定(取得)できない
>2.prnというファイル名に変更した為、ファイル形式は“FileFormat:=xlNormal”でxlsに変更できても、元のファイル名「1」が取得できない
但し、元のファイル名「1」は、「1-1.xls」や「2-1.xls」など、固定されていないファイル名を複数使いたいので、“FileName:="1.xls"”とはできない

と、こんな感じです。

補足日時:2001/12/23 13:48
    • good
    • 0

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

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

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

Qエクセルでデータ.xlsから1行毎に元シート.xlsへコピーし1行毎に多数ファイルを作成したい。

現在、以下のような繰り返し作業をカット&ペーストで何度も行わないといけません。
手が疲れて困っています。
エクセルマクロで簡単にできる方法を教えてください。

以下の例のようにデータ.xlsは、一番上の行に元シート.xlsに差込む位置、
次の行から1行ごとのデータがあります。

データ.xls
A B C D E F
1 A2 A3 B3 C2 D2 D3 <- 元シート.xlsにコピーする位置
2 test 123 456 789 012 345
3 test2 456 789 012 345 678
4 test 456 123 789 012 345
...

元シート.xlsは固定文字や罫線等があります。

元シート.xls
A B C D
1 ------------------------------
2
3
4 abcdefg 9876543
5 ------------------------------

元シート.xlsに、データ.xlsの1行ごとのデータを、指定したセルに入れ、
A列の名前で多数のファイルを作成したいのです。
ただし、A列で同じファイル名がある時は、ファイル名の後に_2等を付けて保存したいのです。

以下のような多数のファイルを自動的に作成する方法を教えて下さい。
宜しくお願い致します。

test.xls
------------------------------
test 789 012
123 456 345
abcdefg 9876543
------------------------------

test2.xls
------------------------------
test2 012 345
456 789 678
abcdefg 9876543
------------------------------

test_2.xls
------------------------------
test2 789 012
456 123 345
abcdefg 9876543
------------------------------
...

現在、以下のような繰り返し作業をカット&ペーストで何度も行わないといけません。
手が疲れて困っています。
エクセルマクロで簡単にできる方法を教えてください。

以下の例のようにデータ.xlsは、一番上の行に元シート.xlsに差込む位置、
次の行から1行ごとのデータがあります。

データ.xls
A B C D E F
1 A2 A3 B3 C2 D2 D3 <- 元シート.xlsにコピーする位置
2 test 123 456 789 012 345
3 test2 456 789 012 345 678
4 test 456 123 789 012 345
...

元シート...続きを読む

Aベストアンサー

丸投げに当るので、原型のみです。
上の例のtest_2.xlsのA1セルはtestが正しいと解釈して作成しています。
その他不明な部分は適当に仮定しています。(原型なので問題ないでしょう。)

・データの整合性等のチェックは一切省いていますので、実際の使用では各種のチェックを入れておかないと即エラーになります。(データが想定と違う場合)
・変数の宣言は省略して名前のみにしてありますが、実際はタイプを指定しておいたほうが良いでしょう。
・元シート.xlsおよび作成されるファイルは同じフォルダにあるものとしています。
・データ.xlsからのコピーはコピーメソッドで行っていますので、書式などもそのままコピーされます。
 (もし式が入力されている場合は、参照がおかしくなることがあり得ます)
・元データのデータ有無に関わらず、データシートのデータを上書きするようにしています。

データ.xlsがアクティブな状態で実行されるものと仮定しています。
(シート名、ブック名などは仮設定です)
適宜、修正してご使用ください。

Sub test()
Dim dst_name, mbk_name, mst_name, bk_name, b_name
Dim dst, mbk, mst
Dim ad, p, i, j

p = ThisWorkbook.Path & "\"  '// 対象となるフォルダのパス+"\"
dst_name = "データシート"    '// 対象データのあるデータ.xlsのシート名
mbk_name = "元シート.xls"    '// 元シート.xlsのファイル名
mst_name = "元シート"      '// 元シート.xlsの対象とすべきシート名

Set dst = Sheets(dst_name)
For i = 2 To dst.Cells(dst.Rows.Count, 1).End(xlUp).Row

'// 作成するファイル名をチェック
 b_name = dst.Cells(i, 1)
 If b_name <> "" Then
  j = 1
  bk_name = p & b_name & ".xls"
  While Dir(bk_name) <> ""
   j = j + 1
   bk_name = p & b_name & "_" & Format(j, "#") & ".xls"
  Wend

'// データをコピー、保存
  Workbooks.Open p & mbk_name
  Set mbk = ActiveWorkbook
  Set mst = mbk.Sheets(mst_name)
  For j = 1 To dst.Cells(i, dst.Columns.Count).End(xlToLeft).Column
   dst.Cells(i, j).Copy (mst.Range(dst.Cells(1, j).Text))
  Next j
  mbk.SaveAs (bk_name)
  mbk.Close
 End If
Next i
End Sub

丸投げに当るので、原型のみです。
上の例のtest_2.xlsのA1セルはtestが正しいと解釈して作成しています。
その他不明な部分は適当に仮定しています。(原型なので問題ないでしょう。)

・データの整合性等のチェックは一切省いていますので、実際の使用では各種のチェックを入れておかないと即エラーになります。(データが想定と違う場合)
・変数の宣言は省略して名前のみにしてありますが、実際はタイプを指定しておいたほうが良いでしょう。
・元シート.xlsおよび作成されるファイルは同じフォルダに...続きを読む

Q至急お願いします!EXCEL2002で、大切なファイルに誤って、違うワークシートの中身を「上書き保存」した場合、元に戻すには? 

 緊急の内容です!宜しくお願います。
 EXCEL2002で、大切なファイルに、誤って、違うワークシートの中身を所謂、『上書き保存』してしまった場合、元通り『以前の状態』に戻すことは、可能ですか?

 たった今、ヤラかしてしまい、大慌てで、『Ctrl+Z』キーで『前回操作を取り消そうとした』のですが、不幸なことに、後の祭りでした。

 色々と、手を尽くした挙句、次のフリーソフトを、上書き保存する以前にインストールしていれば、★監視機能により、事前警告してくれるそうですが、今となっては、やはり、後の祭りです。

  http://www.vector.co.jp/vpack/browse/pickup/pw5/pw005886.html

 ★『復元不可能』そうなことは、HDDにデータファイルが書き込まれる仕組み、からいって、★テンプレ-トファイルデータがき込まれていた場所に、そのまま書き込まれてしまい、元のデータが消失する仕組み★であることは調べたのですが、

 どうしても諦め切れません。

 ★『システムの復元』で変わるのは、PCのシステムに関わるような、重要な変更点だけですよね?

 僅かな可能性に掛ける場合として、★『ファイルの上書き保存』の作業だけエラーに終わり、失敗していた★というのであれば、ファイルは無事であり、全く変更されていない場合も想定できるのですが、なかなか、在り得そうにありませんので‥‥‥‥‥‥‥‥‥‥‥

 ”何か良いお考え”をお持ちの方、是非、教えて下さい!
  宜しくお願います。

 緊急の内容です!宜しくお願います。
 EXCEL2002で、大切なファイルに、誤って、違うワークシートの中身を所謂、『上書き保存』してしまった場合、元通り『以前の状態』に戻すことは、可能ですか?

 たった今、ヤラかしてしまい、大慌てで、『Ctrl+Z』キーで『前回操作を取り消そうとした』のですが、不幸なことに、後の祭りでした。

 色々と、手を尽くした挙句、次のフリーソフトを、上書き保存する以前にインストールしていれば、★監視機能により、事前警告してくれるそうですが、今となっては、や...続きを読む

Aベストアンサー

>★『システムの復元』で変わるのは、PCのシステムに関わるような、重要な変更点だけですよね?

その通りです。システムの復元は動作が不安定になった場合に異常が出る前の状態に戻すだけです。システム関係以外のデータは復元できません。

ただ単にデータを消してしまっただけなら可能性はあるんですが上書きしてしまった場合は不可能です。もしかしたらデータ復旧業者なら可能かもしれませんが数万~数十万円かかります。少なくとも個人での復元は無理なので後はそのデータの重要度に高い料金を払う価値があるかですね。

Qエクセルで同じファイル名のファイルを別のファイル名で保存したい

エクセルで、社員に同じテンプレートのファイルに入力してもらい、それを集計するつもりです。集まったファイルは同じファイル名なので、別のファイル名としてフォルダに保存したいのですが、簡単にできる方法やフリーソフトはないでしょうか。

Aベストアンサー

メールの添付Book.xls(テンプレ)を開くと 集計Bookにシートを移動
準備
1.集計用のBookを作成(新規  集計.xls など)
2.Tool>マクロ>VisualBasicエディターを起動
3.ThisWorkBookに下記マクロを貼り付け
調整
1.テンプレ名 = "*" を実際のテンプレ名にする。
   *はワイルドカード 例 "*.xls" "*日報*.xls" 
2. Set 名前のセル = Workbooks(1).Sheets(2).Range("A1")の
  セルをテンプレの送信者の名前のあるセルにする。
       例  ・・・.Range("B5")など
3.テンプレのシートが複数なら・・・別途
  
使いかた
1.集計用のBook(マクロ入り)を開く
2.メールの添付 テンプレ.xls を開く。

結果 自動で
 エクセルで開いたときに シート(名前+日付)として テンプレを取り込む。
 開いたテンプレは自動終了するので
 同じ名前のBook、テンプレは同時に開くことを回避。
 

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
テンプレ名 = "*" '*テンプラ.xls" '実際に併せて設定
If Workbooks(2).Name Like テンプレ名 Then

Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False

On Error Resume Next
'メールの添付Book(テンプレ)を開くと 集計Bookにシートを移動
Workbooks(2).Sheets(1).Copy after:=Workbooks(1).Sheets(1)
Workbooks(2).Close
'送信者識別処理、重複防止処理、シート名変更処理
Set 名前のセル = Workbooks(1).Sheets(2).Range("A1")
提出者名 = 名前のセル.Value '提出者名
シート名 = 提出者名 & Format(Now, "yymmdd") '名前+日付
Err = 0
If Workbooks(1).Sheets(シート名).Name = シート名 Then
'既にこの人のテンプレは読み込み済み:更新しない処理??
If Err = 0 Then Workbooks(1).Sheets(2).Delete
End If

If Err Then
'新しい読み込みシート
Workbooks(1).Sheets(2).Name = シート名
End If

Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True

End If

End Sub

メールの添付Book.xls(テンプレ)を開くと 集計Bookにシートを移動
準備
1.集計用のBookを作成(新規  集計.xls など)
2.Tool>マクロ>VisualBasicエディターを起動
3.ThisWorkBookに下記マクロを貼り付け
調整
1.テンプレ名 = "*" を実際のテンプレ名にする。
   *はワイルドカード 例 "*.xls" "*日報*.xls" 
2. Set 名前のセル = Workbooks(1).Sheets(2).Range("A1")の
  セルをテンプレの送信者の名前のあるセルにする。
       例  ・・・.Range("B5")など
3.テンプレのシ...続きを読む

Q別名ファイルに上書き保存を・・・・元のデータはやっぱりない?

ウチの、超初心者旦那がエクセルで
「A」というファイル名のデータを修正後、上書き保存を押せばよいのに
「名前を付けて保存」をクリックし、
ファイル名「A」の下にある「B」をクリックしたらしく、
「上書きしますか?」と聞かれOK・・・を押したみたい。
「A」と「B」が同じ内容で保存されています。
(なぜか「A」も更新されている←これは不明)
ファイル「B」の上書き前の内容はもう、呼び出せないのでしょうか。
保存場所はフロッピーディスクです。
作業をしていたパソコンは今はそばにありません。
(会社に置いてきたんだそうで)

Aベストアンサー

このソフトを使ってみてください。
それでだめならあきめるしかないと思います。
http://www.vector.co.jp/soft/win95/util/se192983.html

こういうこともありますから、フロッピーディスクは共用せず、
個人個人のものを使われた方がいいですよ。

参考URL:http://www.vector.co.jp/soft/win95/util/se192983.html

Qエクセルでファイルの上書き保存も名前をつけて保存もできない。

ネットワークで繋いで社内の別のパソコンのハードに保存されている、エクセルの
作業を1日していたのですが、今までは何の問題もなく保存できていたのですが、
突然、「ファイルを保存できませんでした」とエラーになってしまいます。
そのコメント内のヘルプを開くと、保存する充分な空き容量がないか、保存中に
Escキーを押した・・・・などとあるのですが、どれも当てはまりません。
今日の作業中で、何度か保存をしたのですが、その時は保存できたんです。
保存先を変更しても保存することができません。
大事なデータなのでどうしても保存しなくてはならないのですが、原因が全く
わかりません。
環境は、WindowsNTでエクセル97だと思います。

Aベストアンサー

ネットワークについては他の回答があるようなので、別の内容でお答えします。

1.保存できないのは特定のファイルのみでしょうか?
特定のファイルのみであれば、ファイルが破損している可能性が大きいです。自分のHDに保存し、名前をつけて保存してみてください。
しかし、全く書き込みができない状態の場合は、ハードディスクが圧迫されていることも考えられます。(windows\systemフォルダの容量を調べる)。
基本的には消してはまずいファイルなので隠しファイル設定になっているので、「表示」-「フォルダオプション」-「表示」でSystemフォルダが表示できます。

2.他の端末からアクセスして保存ができるのか?
社内の別のパソコンのハードへのアクセス権を確認してください。

3.EXCELファイルのアイコンで右クリックし、プロパティを選び読み取り専用はオフになっているか?

頑張ってください。


人気Q&Aランキング

おすすめ情報