痔になりやすい生活習慣とは?

Excelのシート1のみを、本日の日付と名前の入ったセル(I7)を保存する時の名前にして指定したフォルダへ保存したいと思っています。

1、シートは本日の日付+I7セルに入っている値を名前にする。
2、フォルダはCではなくV:\○○\○○\○○\○○\○○\○○\○○に格納
3、シート1以外のシート2、シート3は保存せず閉じる
4、格納後○○に保存しました。と表示

試行錯誤し、下記のように記述してみたのですが、
Sub Macro1()
'Option Explicit
Sub Sample()
Dim xSheet As Worksheet
Dim myFile As String
Dim myName As String
Set xSheet = ActiveSheet
ThisWorkbook.Worksheets("シート名").Copy
'myName = ActiveWorkbook.Worksheets(1).Name
'myFile = ThisWorkbook.Path & "\" & myName & ".xls"
myFile = ThisWorkbook.Path & "\" & xSheet.Range("I7").Value & ".xls"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=myFile
Application.DisplayAlerts = True
ActiveWorkbook.Close
End Sub

日付を指定して保存
Sub test()
 Dim Filename As String
 Filename = Format(Date, "yyyy年mm月dd日") & ".xls"
 ActiveWorkbook.SaveAs "C:\My Documents\" & Filename
End Sub


日付とI7セルの名前を合せてブックの名前としたい場合どうVBEで記述すればいいのかわからないので詳しい方がおられましたら、
よろしくお願いいたします。

あまり詳しくないので、そのままコピーできるか、○○の部分を指定フォルダ名に変えてください。等の注釈を付けていただけると助かります。

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

A 回答 (1件)

処理の流れは以下の様になっています。


1.1枚目のシートだけで新規ブックを作成
2.今日の日付とセルI7の値で新しいブック名を付けて保存終了
3.メッセージを表示
4.元のブックを保存せずに終了

Sub Sample()
  Sheets(1).Copy
  sNewName = Format(Now, "yyyy年mm月dd日") & Range("I7")
  ActiveWorkbook.SaveAs Filename:="V:\○○\○○\○○\○○\○○\○○\○○\" & sNewName
  ActiveWindow.Close
  MsgBox "○○に保存しました"
  'ここから下は、元ブックを保存せずに終了する処理
  ThisWorkbook.Saved = True
  Application.Quit  '←Excelを終了しなくても良い場合は削る
  ThisWorkbook.Close False
End Sub
    • good
    • 0
この回答へのお礼

お礼が遅くなりました。

大変うまくいきました。

有難うございます!!!

お礼日時:2013/12/10 15:05

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qエクセルの特定のシートのみを保存するマクロ

を作成できればと思っています。
このブック内にはたくさんのシートがあります。
毎日データ更新するのですが、そのうち1シートのみ、他の人に送信する必要があるので、たとえば(理想は)編集が済んだ時点で、あるシートに設けたコマンドボタンのようなものをクリックしたときに、その必要な1シートがコピーされて、別のエクセルファイルとして保存されるのが理想です。

マイドキュメント内の、「ファイル」という名前のファイルに保存をしたいと思っています。

今は、必要なシートのシート名をクリックして、コピーを選び、新しいシートを作成して、、、という作業をしています。これを端折ることができないか、と考えております。
なお、このシートを保存するとき、そのシート名は、ある特定のセルの入力値になることが理想です。
というのも、そのマクロが起動するたびに、全く同じ名前で上書き保存されていくのは困りますので、、、

どなたかお詳しい方がいらっしゃいましたらどうぞお願いいたします。

Aベストアンサー

ANo.1です。

> この場合、シートの保存をする時点で、値のみの保存にしたらよろしいのでしょうか。

保存の前に値のみの状態にすれば良いと思います。
私のコードの場合、保存(ActiveWorkbook.SaveAs ……)の前に以下の4行を追加してみてください。

  Cells.Select
  Selection.Copy
  Selection.PasteSpecial Paste:=xlPasteValues
  Application.CutCopyMode = False

Q(VBA)特定のシートのみを名前を付けて保存

Excel2003です。
数シートあるうちの特定のシートのみを別のbookとして「名前を付けて保存」する下記のコードを書きました。一応うまく動くのですが、実はこの特定のシートには行の非表示部分があります。しかし、下記のコードではもちろん非表示部分も開かれた状態で保存がされますよね。
この非表示の状態で保存するにはどのようにすればよいのでしょうか?
【以下現在のコードです】
------------------------------------------------
Sub 名前を付けて保存()

'報告書を"名前を付けて保存"

Sheets("報告書").Select

Dim 既定ファイル名 As String
Dim 保存ファイル名 As Variant
既定ファイル名 = "報告書"
保存ファイル名 = Application.GetSaveAsFilename(既定ファイル名, "Excel ブック(*.xls),*.xls")
If 保存ファイル名 = False Then
MsgBox "保存は中止されました。"
Else
With ThisWorkbook.ActiveSheet
Workbooks.Add
.Cells.Copy ActiveSheet.Range("A1")
ActiveWorkbook.SaveAs 保存ファイル名, xlNormal
ActiveWorkbook.Close False
End With
Sheets("報告書").Select
Range("A1").Select
MsgBox "報告書を作成しました。"
End If
End Sub
----------------------------------------------------

Excel2003です。
数シートあるうちの特定のシートのみを別のbookとして「名前を付けて保存」する下記のコードを書きました。一応うまく動くのですが、実はこの特定のシートには行の非表示部分があります。しかし、下記のコードではもちろん非表示部分も開かれた状態で保存がされますよね。
この非表示の状態で保存するにはどのようにすればよいのでしょうか?
【以下現在のコードです】
------------------------------------------------
Sub 名前を付けて保存()

'報告書を"名前を付けて保存"

Sheets(...続きを読む

Aベストアンサー

Sub 名前を付けて保存()

'報告書を"名前を付けて保存"

Sheets("報告書").Select

Dim 既定ファイル名 As String
Dim 保存ファイル名 As Variant
既定ファイル名 = "報告書"
保存ファイル名 = Application.GetSaveAsFilename(既定ファイル名, "Excel ブック(*.xls),*.xls")
If 保存ファイル名 = False Then
MsgBox "保存は中止されました。"
Else
With ThisWorkbook.ActiveSheet
Workbooks.Add
.Copy After:=ActiveWorkbook.Sheets(1)
Application.DisplayAlerts = False
ActiveWorkbook.Sheets(1).Delete
Application.DisplayAlerts = True
ActiveWorkbook.SaveAs 保存ファイル名, xlNormal
ActiveWorkbook.Close False
End With
Sheets("報告書").Select
Range("A1").Select
MsgBox "報告書を作成しました。"
End If
End Sub

でどうでしょう。

Sub 名前を付けて保存()

'報告書を"名前を付けて保存"

Sheets("報告書").Select

Dim 既定ファイル名 As String
Dim 保存ファイル名 As Variant
既定ファイル名 = "報告書"
保存ファイル名 = Application.GetSaveAsFilename(既定ファイル名, "Excel ブック(*.xls),*.xls")
If 保存ファイル名 = False Then
MsgBox "保存は中止されました。"
Else
With ThisWorkbook.ActiveSheet
Workbooks.Add
.Copy After:=ActiveWorkbook.Sheets(1)
Application.DisplayAlerts = False
ActiveWorkbook.Sheets...続きを読む

Q複数のワークシートEXCELで一つのワークシ-トだけ保存

EXCEL2000をつかっています。
10個ほど、ワークシートが作成してあるbookなのですが、あくまで雛型としてのワークシートなので、その都度どのワークシートを使うかは決まっていなく、保存する時(保存する時は違うファイル名)はその使った一つのワークシートだけ保存したいのです。
(通常どおりにbookまるごと保存すると容量が重くなるで困る)
そういうことって出来るのでしょうか?
たとえば「精算書」というファイル名(10個のワークシート)で、
ワークシート名1: 横浜
ワークシート名2: 川崎
ワークシート名3: 東京・・・・
という風に構成されているとき、
2枚目のワークシート(川崎)だけ、別のファイルとして保存するという意味です。
宜しくお願いします。

Aベストアンサー

 ワークシート名2: 川崎のシートの上で右クリックして,「移動またはコピー」
で「移動先ブック名」を新しいブックにして移動して保存するのはどうでしょうか。

QエクセルVBAでシートを別のフォルダに新規ブックとして格納

デスクトップにある「元ブック」の「元」シートを、Dドライブの「先フォルダ」という名前のフォルダに「新ファイル」というブック名で格納したいのですが、教えていただけないでしょうか。

Aベストアンサー

マクロが書かれているブックは「元ブック」でよいですか?
以下のマクロは「元ブック.xls」が開いている状態で動かすことを前提にしています。

Sub Macro1()
 Worksheets("元").Copy
 ActiveWorkbook.SaveAs "d:\先フォルダ\新ファイル.xls"
 ActiveWorkbook.Close
End Sub

もしDドライブの「先フォルダ」に既に「新ファイル」が存在するときに確認目セージを表示せず上書きするなら、マクロは以下になります

Sub Macro1()
 Worksheets("元").Copy
 Application.DisplayAlerts = False
 ActiveWorkbook.SaveAs "d:\先フォルダ\新ファイル.xls"
 Application.DisplayAlerts = True
 ActiveWorkbook.Close
End Sub

Qvba 特定の複数シートを別ファイルで保存。

ブック内にA,Bと2つのシートがあり、ボタンをクリックすると特定の回数、シートAの情報が新規作成されたシートCにコピーされ、シートCとシートBの2シートが別ファイルとして保存される。という動きを繰り返したいのですが、
新規生成されるシートCだけを別ファイルで保存することまでは出来たのですが、シートBが追加できず困っています。

Sub 分割()

Dim cpy As Range
Dim pst As Range

Dim path 'ファイルパス
path = ActiveWorkbook.path
Dim CopyWorkBook
Dim CopyWorkSheet1
Dim CopyWorkSheet2
Dim Position(2,2) 'ここにはシートCを作成する際の情報が入っている。

'新規シートCを作成してシートAからデータをコピー。
For i = 1 To 2 Step 1 'とりあえず2シート作成する。
Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = Position(i, 2)

'まずは、タイトル欄をコピー
Worksheets("Sheet1").Activate
Set cpy = Worksheets("Sheet1").Range("A2:Q2")
Worksheets(Position(i, 2)).Activate
Set pst = Worksheets(Position(i, 2)).Range("A2:Q2")
pst.Value = cpy.Value '貼り付け
End With

'シートを別名で保存
Set CopyWorkSheet1 = Worksheets(Position(i, 2))
Set CopyWorkSheet2 = Worksheets("シートB")

CopyWorkSheet1.Copy
' CopyWorkSheet2.Copy ←これでシートBもコピーされるかと思いましたが、シートBが上書きされてしまう。
Set CopyWorkBook = ActiveWorkbook

ActiveWorkbook.SaveAs path & "\" & Position(i, 2) & "xls", xlWorkbookNormal
CopyWorkBook.Close
Next

End Sub

質問は2つあります。
(1)シートBも新規作成されたシートCと一緒に別ブックに保存したいのですが、どうすればいいでしょうか?
(2)シートのコピーの動きがイマイチよくわかりません。
今の私の環境だと(ネットで調べた書き方ですが)、シートを別ブックにコピーする際、

Set CopyWorkSheet1 = Worksheets("シートA")
CopyWorkSheet1.Copy
Set CopyWorkBook = ActiveWorkbook

となっていますが、Setで、コピー元のシートAの情報をCopyWorkSheet1にコピーしたあと、
CopyWorkSheeet1.Copy となっていますが、この意味がわかりません。
なぜ更にコピーしているのでしょうか?またこれで、別ブックにシートが追加されてる理由もわかりません。
また、この処理の後に、 Set CopyWorkBook = ActiveWorkbook と、ブックの情報をコピーしていますが、普通に考えると最初にブックの情報をコピーして別名のブックを生成しておく必要があるように思えるのですが、後でよい理由も分かりませんし、これだと、Activeのワークブックのシート情報も全部コピーされてしまう気がするのですが。。。
この辺が全然分かっていないので、解説頂けるか参考サイトを教えて頂けないでしょうか。

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

ブック内にA,Bと2つのシートがあり、ボタンをクリックすると特定の回数、シートAの情報が新規作成されたシートCにコピーされ、シートCとシートBの2シートが別ファイルとして保存される。という動きを繰り返したいのですが、
新規生成されるシートCだけを別ファイルで保存することまでは出来たのですが、シートBが追加できず困っています。

Sub 分割()

Dim cpy As Range
Dim pst As Range

Dim path 'ファイルパス
path = ActiveWorkbook.path
Dim CopyWorkBook
Dim CopyWorkSheet1
Dim CopyW...続きを読む

Aベストアンサー

何をされたいのかちょっとよく分からないので(^^;、
余計混乱してしまうかもしれませんが、以下の視点を持つと、理解が進むと思います。
・Setでいちいちオブジェクトに代入しなくてもコピペ(というか値を書き写す)できます。
・通常のマウス操作であるコピーしてペーストするというのを忘れて下さい。

■セルのコピー
左辺の値を右辺にすると書きます。
Range("○○").value = Range("●●").value
(今アクティブなシートの)セル○○の値をセル●●の値にします。

シートを指定する場合はRangeの前にSheets("●●").のように。
ブックを指定する場合はSheetsの前にWorkbooks("●●").のように書きます。

■シートのコピー
これはそういう命令です。
Sheets("○○").copy のあとにBeforeかAfterと書いて、
どのシートの前(後ろ)にコピーするか指定します。

■参考
Sub sheet_copy1()
Sheets("○○").copy After:=Sheets("○○")
End Sub

↑シート名○○を、シート名○○の後ろにコピーし名前は自動付加します。


Sub sheet_copy2()
  Sheets("Sheet1").Range("A1").Value = Sheets("Sheet2").Range("A1").Value
End Sub

↑シート名Sheet2のA1セルの値を、シート名Sheet1のA1セルにコピペします。


Sub sheet_copy3()
With Workbooks.Open("1.xlsm")
Workbooks("2.xlsm").Sheets("sheet1").Copy after:=.Sheets("sheet1")
End With
End Sub

↑ブック名2.xlsmシート名Sheet1を、ブック名1.xlsmシート名Sheet1の後ろにコピーします。
 WithがSetの役割をしています。


・Activateする、Setして代入する、と書かれている行はほぼ全て不要です。
・Activeなシートをどうこうする
というのもワケがわからなくなるので、
直接ブック名やシート名を指定するとうまく動かせる気がします。

何をされたいのかちょっとよく分からないので(^^;、
余計混乱してしまうかもしれませんが、以下の視点を持つと、理解が進むと思います。
・Setでいちいちオブジェクトに代入しなくてもコピペ(というか値を書き写す)できます。
・通常のマウス操作であるコピーしてペーストするというのを忘れて下さい。

■セルのコピー
左辺の値を右辺にすると書きます。
Range("○○").value = Range("●●").value
(今アクティブなシートの)セル○○の値をセル●●の値にします。

シートを指定する場合はRangeの前にSheets("●●").のよう...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q[Excel] ファイル名を変数指定して保存するマクロ

Excelで、セルA1の値の名前でファイルを保存したいのですが、マクロがうまくかけません。
ご存知の方、教えて下さい。

Aベストアンサー

簡単ですが、下記で可能です。
Sub ファイル保存()
ThisWorkbook.SaveAs Cells(1, 1).Value
End Sub
■指定のフォルダに格納する場合は、ファイルメニュ「ツール」→「オプション」の「全般」タブの「カレントフォルダ名」にフォルダを指定してください。

Qファイル名を今日の日付、時刻で保存する

マクロについて教えてください
エクセル(2003?)でマクロを使って
ファイルを保存するボタンをつくろうと思います。
「ファイル名を今の月-日-時-分で保存する」
という内容を書きたいと思います。

保存するところまではできるのですが、
今日の月-日-時-分を自動的にファイル名に入れる
ところをどうしたらよいかわかりません。

Filename = Format(Date, "yyyy-mm-dd")
と入れれば日付が入るのはわかったのですが、
時刻も入れたいです

Filename = Format(Date,"yyyy-mm-dd",Time,"hh-mm-ss")
こんな風に書いてみたのですが、うまく機能しませんでした

ご存知の方、ご教授ください。

Aベストアンサー

Filename = Format(Now(), "yyyy-mm-dd-hh-mm-ss")
でOK。

QExcelで指定範囲のデータのみを保存したい

OS:windows2000
Excel2002

xlsファイルを「名前を付けて保存」で別名ファイルとして保存するとき、データの一部のみを指定して保存をする事は出来ますか?

(1)ブックにシート名が「仕入」「売上」「利益」と3枚あるとします。
「売上」のシートのみを別名ファイルとして保存したい。
当然「仕入」「利益」シートを削除してから別名で保存すれば出来ますが、他に方法があれば教えて欲しいのです。

(2)「仕入」シートに1000行のデータがあるとします。
101行目から200行目のみのデータを別名で保存したい。
これも101行目から200行目以外のデータを削除してから別名で保存すれば出来ますが、他にもっと便利な方法があれば教えて下さい。

私の知識は少々のマクロ記述は理解でる程度です

Aベストアンサー

「売上」シートのシートタブ上で、右クリック。
「移動またはコピー」をクリック。
「移動先ブック名」を「新しいブック」指定する。
「コピーを作成する」にチェックを入れる。
「OK」をクリック
Book2やBook3ができて売上シートだけがコピーされる。
ファイルー名前をつけて保存ー名前を「売上単独」のような名前を
つける(入力する)。
「保存」をクリック
で目的は達せられる。
(2)は
101から200行まで範囲指定。
コピーする。
白紙新シートに貼り付け。
そのシートに対し(1)の操作を行う。
そのシートを削除。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング