Excelファイルの別名保存と内容更新の方法

このQ&Aのポイント
  • Excelファイルの別名保存と内容更新する方法を説明します。
  • 質問文章では、Excelファイルの元の名前で中身を新しくして使いたい場合の手順を記述しています。
  • ただし、最後の行が黄色になり、実行時エラー 1004が発生して個人名.xlsmにアクセスできませんと表示されています。解決方法についての情報を提供してください。
回答を見る
  • ベストアンサー

別名で保存し、元の名前で中身を新しくして使いたい

個人名.xlsmがあり、中味をみて必要ならばまっさらのに更新し、元の分はOLDというフォルダに保存したいのですが... oldName=ThisWorkbook.Name oldPath=ThisWorkbook.Path 中味をみて更新すべきという状態だったら newName="以前の" & oldName newPath=oldPath & "\" & "OLD" ThisWorkbook.save as Filename:=newPath & "\" & newName sheets("sheet1").select Cells.Select Selection.ClearContents ThisWorkbook.save as Filename:=oldPath & "\" & oldName とすると最後の行が黄色になって、 実行時エラー 1004 個人名.xlsmにアクセスできません。 とでます。 何か打開する方法はないでしょうか?

  • USB99
  • お礼率41% (85/206)

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

  • ベストアンサー
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.1

SaveAs を何回も行なったので、 保存すべきファイルと今開いているファイルが 別物となったのでエラーが発生したと推測します。 OLD への保存は SaveCopyAs でファイルコピー 元ファイルの更新は Save で保存 とすれば如何でしょうか

USB99
質問者

お礼

ありがとうございました。 願った結果になりました。本当に助かりました。

関連するQ&A

  • Excel VBA 保存 上書き保存されてしまう

    エクセルデータを閉じる時に元データとは違う場所にバックアップをとるように以下のようなコードを記述しました。(Excel内の一部のデータが何かしらのタイミングで消えてしまう現象が起き、どのタイミングで消えているのかを探るために誰かしらがデータを開いて閉じる時にその閉じた時間をファイル名にして保存させるというのが目的です) Sub Auto_Close() Worksheets("Sheet1").Select 'シート1を開く ThisWorkbook.Save '元データの保存場所に上書き保存 Filename = Format(Now(), "yyyy-mm-dd-hh-mm-ss") ThisWorkbook.SaveAs Filename:="\\●●\●●\●●\●●\●●\" & Filename & ".xlsm" '別の場所に名前をつけて保存 End Sub この別の場所に保存したデータ((1)とします)を開いて中身を確認してから閉じるともちろん再度閉じた時間をファイル名にして保存する((2))ことになるのですが、このとき上書きされるような形になってしまい(1)のデータが残りません。(1)が残るようにするにはどこを修正すればいいのでしょうか?

  • VBA 複数のBOOKの連続操作

    いつもお世話になっております。 複数のブックの更新操作についてわからないことがあります。 複数のブックには項目別のWEBクエリが設定されており、 更新の際にはその都度ブックを開いた上更新しています。 BOOKは4つあり、 BOOK1のコマンドボタンからBOOK2~BOOK4までの更新を実行したいと思っています。 下記のように作ってみたのですが、 BOOK2を更新して閉じた後、BOOK3への処理はスルーされています。 エラーが出るわけではないのですが・・・ 素人のため、説明も要所を得ていませんが、 どうかお力を貸していただけないでしょうか? 下記 BOOK1のマクロ Private Sub CommandButton9_Click() 'ブック2を開いてWEBクエリ更新 Workbooks.Open Filename:="D:\TestBook\test.xlsm" WBN = ActiveWorkbook.Name Application.Run "'" & WBN & "'!Module3.更新して閉じる" 'ブック3を開いてWEBクエリ更新 Workbooks.Open Filename:="D:\TestBook\test2.xlsm" WBN = ActiveWorkbook.Name Application.Run "'" & WBN & "'!Module3.更新して閉じる" End Sub BOOK2~BOOK4 Module3 Sub a1() ' エラーメッセージを表示する(On Errorステートメント) On Error GoTo Err '-------------------------------------------------------- 'webクエリ更新 Range("B6").Select Selection.QueryTable.Refresh BackgroundQuery:=False ’中略 'エラーならブックを上書き保存して閉じます Err: Sheets("sheet1").Select Range("C2").Select Selection.ClearContents Range("P3").Select If ThisWorkbook.Saved = False Then ThisWorkbook.Save End If ActiveWorkbook.Close End Sub 宜しくお願いいたします。

  • ファイル名変更ができません

    こんにちは。Perl(超?)初心者です。 フォルダ内にあるファイルの名前を、「filename_ja.txt」という形式から「filename_en.txt」に変更するスクリプトを書こうとしているのですが、エラーになってうまくいきません。 環境は、Windows XP professional SP3とActivePerl 5.10 で、以下のように記述しました。 use strict; use warnings; my @filename = glob "*.txt"; foreach my $oldname(@filename) { my $newname = $oldname; $newname = ~s/(.+)_ja\.txt/$1_en\.txt/; rename ($oldname,$newname); } これを実行すると、「Use of uninitialized value $_ in substitution (s///) at test_5.pl line 8.」とエラーメッセージが出て、フォルダ内のテキストファイルが消失してしまいます。 また、以下のようにも書いてみたのですが、やはりうまくいきません。 この場合は、エラーこそ出ないものの、なにも起こりません。 use strict; use warnings; for(<\.txt>) { my $old=$_; s/(.+)_ja\.txt/$1_en\.txt/; rename($old,$_); } 初歩的な質問で申し訳ありませんが、ダメな生徒にアドヴァイスを与えるつもりで、スクリプトを添削していただけるとありがたいです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • VBAでの " の使い方をお教え下さい

     ThisWorkbook.SaveAs Filename:="C:???.xlsm"(???はファイル名です)をVBAの式に直す方法をお教えください。なお、???はセルを参照することにしています。具体的にはRange("O1")です。  ThisWorkbook.SaveAs Filename:="""C:" & "Range(""O1"").xlsm"""とすると、ファイル名に : は使えないというエラーメッセージが出ました。  " の使い方が分かりづらく、悩んでいます。正しい使い方はどのように考えれば良いかも教えていただければ幸いです。よろしくお願いします。

  • 名前をつけて保存した後、元のファイルに戻るには

    http://okwave.jp/qa/q2568740.html 上記と同じ質問です。 例えば、「あああ.xlsx」で作業していて、一旦別のファイル名、 例えば「いいい.xlsx」として保存した後に、ファイル「あああ」に戻りたい時があります。 ところが、「いいい」で保存してしまうと、 開いているファイルが「いいい」になってしまうため、 「あああ」に戻るには、「いいい」を閉じてから「あああ」を再度開かなければならず、 とても煩わしいです。これをVBAで解決する方法はありますでしょうか。 以下コードを作成しましたが、当然というか、自分では上の問題を解決できませんでした。 (ただ普通に保存しただけ・・) 解決方法について、どなたかご教示頂ければ幸いです。 Sub ファイル保存() Dim myFile As String Dim Syori As VbMsgBoxResult myFile = ActiveSheet.Range("A1").Value & ".xlsm" Syori = MsgBox("指定した名前のファイル名で保存します。" & vbCrLf & "よろしいですか?", vbYesNo, Title:="確認") If Syori = vbYes Then ThisWorkbook.SaveAs fileName:=myFile MsgBox "保存しました。" Else MsgBox "中止しました。" End If End Sub なお、使用環境はexcel2007です。 よろしくお願いいたします。

  • ファイル名を日付にしたいのですが、うまく行きません

    Sheet1のセルA1に"2016/5/1"のデータが有ります。 このデータをファイル名にして保存したいので、以下のVBAを作りました。 しかし、ファイル名が"2016/5/1"ではなく、"ym"になってしまいます。 どうしたらよいでしょうか? Option Explicit Sub コピー保存() Dim ym As Long Sheets("Sheet1").Range("a1").Select ym = Range("z1") ThisWorkbook.SaveCopyAs _ Filename:="H:\" & "ym" & ".xlsm" End Sub

  • VBAを実行するとエクセルが落ちる

    同一フォルダ内にあるCSVデータを一つのエクセルにワークブックにまとめるため CSVデータを開いて、各シートに値を貼り付けるVBAを作成しました デバックモードで1行毎に実行するとエクセルが落ちることはありませんが 普通に実行するとエクセルが閉じてしまいます 原因が分からないためご指摘いただけると幸いです Win7のOffice2013です。 Sub contents() Sheets("01").Select Sheets("01").Cells.Select Selection.ClearContents Dim ShA As Worksheet Dim FileA As String Set ShA = ThisWorkbook.Sheets("01") ChDir "C:\Users\Public\Documents" FileA = "C:\Users\Public\Documents\01.csv" If FileA <> "False" Then Workbooks.OpenText Filename:=FileA, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Comma:=True ActiveSheet.Cells.CurrentRegion.Copy Destination:=ShA.Range("A1") ActiveWorkbook.Close False End If Set ShA = Nothing Sheets("02").Select Sheets("02").Cells.Select Selection.ClearContents Dim ShB As Worksheet Dim FileB As String Set ShB = ThisWorkbook.Sheets("02") ChDir "C:\Users\Public\Documents" FileB = "C:\Users\Public\Documents\02.csv" If FileB <> "False" Then Workbooks.OpenText Filename:=FileB, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Comma:=True ActiveSheet.Cells.CurrentRegion.Copy Destination:=ShB.Range("A1") ActiveWorkbook.Close False End If Set ShB = Nothing Sheets("03").Select Sheets("03").Cells.Select Selection.ClearContents Dim ShC As Worksheet Dim FileC As String Set ShC = ThisWorkbook.Sheets("03") ChDir "C:\Users\Public\Documents" FileC = "C:\Users\Public\Documents\03.csv" If FileC <> "False" Then Workbooks.OpenText Filename:=FileC, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Comma:=True ActiveSheet.Cells.CurrentRegion.Copy Destination:=ShC.Range("A1") ActiveWorkbook.Close False End If Set ShC = Nothing End Sub

  • エクセルでマクロを組み始めたばかりの者です。下記の

    エクセルでマクロを組み始めたばかりの者です。下記のようなマクロを組んでみましたが、27行目もしくは41行目のActiveSheet.Pasteで「実行時エラー‘1004‘: 変更しようとしているセルまたはグラフは保護されているため読み取り専用となっています…」というエラーメッセージが出て止まってしまいます。 しようとしている内容は、転送ボタンを押し各シートの指定セルへ一括転送(コピー)をしたいのです。 その際、転送先はシート保護をしておきたいのです。 エラーはエクセル2010で確認しましたが、職場のPCを使用するため2007や2003等他のバージョンを利用する可能性もあります。また、仕事で使用するため早急に使わなければならず焦っています。 Option Explicit Private Sub CommandButton2_Click() Call Macro2 End Sub Sub Macro2() Workbook.Open Filename:=”K:¥共有¥○○○.xlsm” ActiveSheet.Unprotect ThisWorkbook.Activate Range(”D4:G20”).Select Selection.Copy Windows(”○○○.xlsm”).Activate Range(”E7”).Select ActiveSheet.Paste Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ActiveWorkbook.Save ActiveWindow.Close Application.CutCopyMode = False Workbook.Open Filename:=”C:¥Users¥Desktop¥×××.xlsm” ActiveSheet.Unprotect ThisWorkbook.Activate Range(”D4:G20”).Select Selection.Copy Windows(”×××.xlsm”).Activate Sheet(”△△△”).Select Range(”AF18:AI34”).Select ActiveSheet.Paste Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ActiveWorkbook.Save ActiveWindow.Close Application.CutCopyMode = False Workbook.Open Filename:=”K:¥共有¥□□□.xlsm” ActiveSheet.Unprotect ThisWorkbook.Activate Range(”D4:G20”).Select Selection.Copy Windows(”□□□.xlsm”).Activate Sheet(”▽▽▽”).Select Range(”AF18:AI34”).Select ActiveSheet.Paste Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ActiveWorkbook.Save ActiveWindow.Close Application.CutCopyMode = False MsgBox " 『○○○』と" & vbCrLf & "『×××』と" & vbCrLf & "『□□□』の" & vbCrLf & "規格を変更しました。" End Sub どの様に修正すれば良いのでしょうか? マクロが原因でしょうか?または他の原因があるのでしょうか? マクロ初心者のため、修正方法など具体的な詳細をお教えいただけないでしょうか。 お手数をおかけして申し訳ございませんが、よろしくお願いします。

  • EXCELマクロを無効にして開く方法

    掲題の通りなのですが、EXCEL2007で作成されたマクロ有効ファイル(XLSM形式)を マクロ無効の状態で開く方法が分からず困っております。 マクロの内容は Workbook_Open 処理で、特定セルに入力されている EXCELファイルを開き、自身は閉じるというものです。 Private Sub Workbook_Open() Dim FileName As String '1ファイル目 Range("A2").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate '2ファイル目 Range("A3").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate ・・・・・・繰り返し DoEvents ThisWorkbook.Close End Sub 上記の特定セルに設定してあるファイルパスを変更するためには マクロを無効にして開かなければなりません。 マクロのセキュリティを変更して、「すべてのマクロを無効にする」を設定して 該当のファイルを開けば良い事は分かっているのですが、他に分かりやすい方法で マクロ無効状態で開く方法があれば、ご教授頂ければと思います。

  • エクセルで繰り返し同じ作業をしたい

    仕事でDドライブの中のフォルダにエクセルのシートが100種類位入っています。それらのエクセルシートに毎日同じ作業をしなければならないのですが、(エクセルを開いて行う作業は各シート共通です)そのマクロの作り方を教えていただけないでしょうか?ちなみに Workbooks.Open Filename:="D:\業務\あ.xls" Range("D9").Select Selection.Copy Range("E9").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save ActiveWindow.Close Workbooks.Open Filename:="D:\業務\い.xls" Range("D9").Select Selection.Copy Range("E9").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save ActiveWindow.Close Workbooks.Open Filename:="D:\業務\う.xls" Range("D9").Select Selection.Copy Range("E9").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save ActiveWindow.Close      その後もまだまだ続きます。 というマクロの記録を使って作ってはいるものの、やたらと長くなってしまいます。VBAの知識がない初心者なのですが、いい方法があれば教えていただけないでしょうか?

専門家に質問してみよう