![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
#2の回答者です。
>bookですか。sheetですか。
>両方で、SaveAsができまが、使い分けがあるのでしょうか。
私は、使い分けは知りません。Sheetで使ったこともありません。
Sheetに対してSaveAsを使ったら、ブックを保存しているようです。一般的には、コードでも、Bookに対して、SaveAs を施すものだと思いますね。その方が読みやすいです。
ご質問者さんが、そういう方法もあって使いたいというのなら、私は問題点はないだろうと思うだけです。ただ、私なら、そういう場合は、Copyを使いますね。
例:
ActiveSheet.Copy
ActiveWorkbook.SaveAs "Test121231.xls"
Bookなら、SaveAs です。
> OutSheet.SaveAs Filename:=OutFileName ←いらないのでは?
> OutBook.SaveAs Filename:=OutFileName
> OutBook.Close
ただ、これって、二重にしてはいませんか?
No.2
- 回答日時:
こんにちは。
#1さんの回答を読ませていただいて、実際の違いは私は知りませんでしたが、ActiveSheet.SaveAs "○○○" という方法は、私は使ったことがありません。
それにご質問のコードは、省略しているいう「ことわり」がない限りは、不自然に感じます。
データのあるシートのみを保存したい、とした場合に、マクロではどうするか、ということになるはずです。そうしたら、私なら、
そのシートを宛先のないコピーをして、ブックを作り、その時点で、保存する、ということになります。
'//
Sub Test1()
'元のブックから新しいブックにデータを写し、保存
ActiveSheet.Copy
With ActiveWorkbook
.SaveAs "TestBook_A.xls"
.Close
End With
End Sub
'//
Sub Test2()
'元のブックから新しいブックにデータを写し、CSVとして保存
ActiveSheet.Copy
With ActiveWorkbook
.SaveAs "TestBook_B.csv", FileFormat:=xlCSV
.Close False
End With
End Sub
'//
この回答への補足
住所録Aと住所録Bがあります。
AとBを比較して、差異をを別ファイルに出力しようとしています。
比較元となるファイルは、AでもBでもかまいません。
比較、判定、ファイルへの出力部分は、省略していますが、保存
する場合は、どこに行うのがよいのですか
bookですか。sheetですか。
両方で、SaveAsができまが、使い分けがあるのでしょうか。
どのように使い分けするのでしょうか。
書き方、使い方のおかしいところを指摘して頂くとありがたい
です。
---------------------------------------------------------------------------------------------------
Option Explicit
Sub test()
Dim ret As Integer
Dim row1 As Long
Dim col1 As Long
Dim row2 As Long
Dim col2 As Long
Dim myRtn As Boolean
Dim fno1 As String
Dim fno2 As String
Dim OutBook As New Workbook
Dim OutSheet As New Worksheet
Dim OutFileName As String
Dim cnt As Integer
Dim I As Integer
ret = MsgBox("処理を開始します。" + Chr(13) + Chr(10) + "よろしいですか。?", _
vbYesNo + vbQuestion)
If ret = vbNo Then
End
End If
myRtn = Application.Dialogs(xlDialogOpen).Show
If myRtn = False Then
MsgBox "[キャンセル]が選択されました" & vbCr & _
"処理を終了します"
Exit Sub
End If
fno1 = Application.ActiveWorkbook.Name
myRtn = Application.Dialogs(xlDialogOpen).Show
If myRtn = False Then
MsgBox "[キャンセル]が選択されました" & vbCr & _
"処理を終了します"
Exit Sub
End If
fno2 = Application.ActiveWorkbook.Name
Set OutBook = Workbooks.Add
Set OutSheet = ActiveSheet
OutBook.Worksheets(1).Name = "テスト"
OutFileName = "テスト.xls"
With Application.Workbooks(fno1).Worksheets(1)
row1 = 1
col1 = 1
cnt = 1
Do While .Cells(row1, 1) <> ""
処理
(省略)
Loop
End With
MsgBox "処理が終了しました。", vbOKOnly + vbInformation, "確認"
Application.Workbooks(fno1).Close
Application.Workbooks(fno2).Close
OutSheet.SaveAs Filename:=OutFileName
OutBook.SaveAs Filename:=OutFileName
OutBook.Close
End Sub
---------------------------------------------------------------------------------------------------
OutSheet.SaveAs Filename:=OutFileName
or
OutBook.SaveAs Filename:=OutFileName
のどちらでも保存ができます。
また、書き方、使い方のおかしいところを指摘して頂くとありがたいです。
No.1
- 回答日時:
機能が違うのは間違いない、下に解説を読むと使い分けがあるようだが、(最後の)こういうのもあるので、Workbooks.SaveAsが安全、ということでは??
http://www.happy2-island.com/excelsmile/smile03/ …
http://www.happy2-island.com/excelsmile/smile03/ …
~~~
実際に保存するときはWorkbooks.SaveAsメソッドを使います。
~~~
ちなみに、CSVファイルを選択したときは、選択しているワークシート(ActiveSheet)をCSV形式で保存します。
ExcelVBAでテキスト保存
http://oshiete.goo.ne.jp/qa/2700825.html
CSV形式で保存するときは、
Sheets("test").Activate
ActiveSheet.SaveAs Filename:=ActiveSheet.Name & ".csv", _
FileFormat:=xlCSV, CreateBackup:=False
でtest.csvに保存できますが、
単純にテキストファイルとして保存したいときに
Sheets("test").Activate
ActiveSheet.SaveAs Filename:=ActiveSheet.Name & ".txt", _
FileFormat:=xlText, CreateBackup:=False
としても、実行時に下記のエラーになってしまいます。
実行時エラー '1004'
アプリケーション定義またはオブジェクト定義のエラーです。
また、CSVで保存した時も開いているファイルがtest.csvに変わってしまいますが、できれば、開いているファイルは元のファイルのままでシートだけを保存するにはSaveAsメソッドではなく、他のメソッドを使うのでしょうか?
(hogehoge.xlsのtestシートを保存してもhogehoge.xlsが開いたままにしたい)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/09 12:17
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- その他(Microsoft Office) 【VBA】フォルダ内のファイル全てに対して、セルA1の文字列から「;」を削除して上書き保存する方法 4 2022/04/24 10:59
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
いきなりPDFでPDFファイルを開...
-
エクセルを上書き保存したのに...
-
エクセルでVBAを使用して1分毎...
-
Excel画面の自動更新 Excelファ...
-
エクセル・マクロ(VBA)で、指定...
-
メール添付されているファイル...
-
エクセル表のCSV化ができない
-
エクセル文書を保存したらメモ...
-
ピボットテーブルの更新ができない
-
マクロ VBA ファイル名を連番...
-
エクセルで保存の前に固まって...
-
excelでhtmlでの保存を元に戻...
-
Illustratorファイルに読み取り...
-
エクセルファイルの保存
-
エクセルで保存しますか?のメ...
-
Excelに筆ぐるめの
-
GetSaveAsFilenameでフォルダを...
-
メールソフト「サンダーバード...
-
開いてるファイル(エクセル等)...
-
エクセルでCSVファイルとして保...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを上書き保存したのに...
-
エクセル文書を保存したらメモ...
-
いきなりPDFでPDFファイルを開...
-
メール添付されているファイル...
-
マクロ VBA ファイル名を連番...
-
Excel画面の自動更新 Excelファ...
-
エクセルがwindows終了時に未保...
-
エクセルでCSVファイルとして保...
-
エクセルでVBAを使用して1分毎...
-
OneDriveの存在を知った。エク...
-
Illustratorファイルに読み取り...
-
ピボットテーブルの更新ができない
-
開いてるファイル(エクセル等)...
-
エクセル表のCSV化ができない
-
GetSaveAsFilenameでフォルダを...
-
エクセル 更新していないのに...
-
csvファイルを上書き保存でカン...
-
「変更を保存しますか?」と聞...
-
マクロVBA特定フォルダーに次々...
-
エクセル2019でPDFファイル名に...
おすすめ情報