- ベストアンサー
Excel97VBA
Excel97のVBAでマクロを作っています。 1.xlsというファイルを、2.prn(スペース区切りテキスト)で保存し、再度1.xlsというファイルで元のファイルに上書き保存したいのですが、1というファイル名を任意に変更したいので、保存形式とファイル名を元のファイルと同じにして元のファイルに上書きする、ということは可能でしょうか?
- みんなの回答 (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
その他の回答 (2)
- nishi6
- ベストアンサー率67% (869/1280)
『自分を別名(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
- Raistlin
- ベストアンサー率63% (65/102)
こんにちは この質問はNo.188673と何が違うのでしょうか? もしうっかり2重投稿とかいうので無ければ、もう少し具体的な問題点を書いてください。
補足
説明不足で申し訳ありません。 「任意ディレクトリの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"”とはできない と、こんな感じです。
お礼
ありがとうございました。 おかげで完成しました。