プロが教えるわが家の防犯対策術!

シートをコピーして別ブックに名前をつけて保存するプログラム組んだのですが
画像ファイルがあるとエラーコード1004が発生し保存できません
解決策何かあるでしょうか
保存コード下記
sheet(Array("チェックリスト”,"チェックリスト画像”)).Select

sheet(Array("チェックリスト”,"チェックリスト画像”)).copy

a=Worksheets("チェックリスト").Range("B6").Value
myFile="C:¥成績書保存フォルダ¥” & a  &  "チェックリスト” & ”.xlsx
set xsheet=ActiveSheet
Application.DisplayAlerts=False
ActiveWorkbook.Save Filename:=myFile
Application.DisplayAlerts=Ture

質問者からの補足コメント

  • へこむわー

    ご返答ありがとうございます
    ご教授いただいたコードをそのまま貼り付けて試したのですがjpgをチェック画像に張り付けるとエラーになります
    張っていないと名前付けて保存するのですが なにがいけないのでしょうか?

      補足日時:2017/11/17 15:31

A 回答 (2件)

とりあえず、以下のようなことでしょうか?


--------------------------------------------------------------------------------
Sub test()
Dim ファイル名 As String
ファイル名 = Sheets("チェックリスト").Range("B6").Value
ファイル名 = "C:\成績書保存フォルダ\" & ファイル名 & "チェックリスト" & ".xlsx"
Sheets(Array("チェックリスト", "チェックリスト画像")).Select
Sheets(Array("チェックリスト", "チェックリスト画像")).Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=ファイル名, FileFormat:=51
ActiveWindow.Close
Application.DisplayAlerts = True
End Sub
--------------------------------------------------------------------------------
※ コピーしたファイルは閉じていますが、閉じたくなければ「ActiveWindow.Close」を削除してください。
    • good
    • 0
この回答へのお礼

コピーミスしておりました 無事対応できました ありがとうございます

お礼日時:2017/11/17 15:43

大変申し訳ないのですが、コードを載せるときはコピペしていただけないでしょうか?


スペルミスが原因かどうかの判断が付かないので再掲載してください。
    • good
    • 0

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

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

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

QExcel VBA 複数シートを別ファイルにコピーして保存

Excel VBAはまだ初心者なので、よくわかっていないのですが、複数シートを別ファイルにコピーして保存したいと思っております。

下記は、一番左のシートだけをB1に書かれ値で別ファイルとして保存できるようなものをつくってみました。ここから、左から1番目と2番目だけをコピーして、同じようにファイル名を指定して保存したいと考えていますが、全くうまくいかず・・・。

お手数ですが、どこを修正すべきなのかをおしえていただけますでしょうか。

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

Sub SheetSave()

Dim xSheet As Worksheet
Dim myFile As String
Dim myName As String

Set xSheet = ActiveSheet

'一番左のファイルのコピー
ThisWorkbook.Worksheets(1).Copy after:=ThisWorkbook.Worksheets(1)

myFile = ThisWorkbook.Path & "\" & xSheet.Range("B1").Value & ".xlsx"
Application.DisplayAlerts = False
ActiveSheet.SaveAs fileName:=myFile
Application.Dialogs(xlDialogSaveAs).Show
Application.DisplayAlerts = True
ActiveWorkbook.Close

End Sub

Excel VBAはまだ初心者なので、よくわかっていないのですが、複数シートを別ファイルにコピーして保存したいと思っております。

下記は、一番左のシートだけをB1に書かれ値で別ファイルとして保存できるようなものをつくってみました。ここから、左から1番目と2番目だけをコピーして、同じようにファイル名を指定して保存したいと考えていますが、全くうまくいかず・・・。

お手数ですが、どこを修正すべきなのかをおしえていただけますでしょうか。

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

Sub SheetSave()

...続きを読む

Aベストアンサー

シート2枚まとめて1つのブックにコピーということなら

Sub SheetSave2()
  Const N As Long = 2
  Dim myFile As String
  Dim myName As String
  Dim mySh(1 To N) As String
  Dim i As Integer

  myFile = ThisWorkbook.Path & "\" & ActiveSheet.Range("B1").Value & ".xlsx"

  '左から N番目までのシートをコピー
  For i = 1 To N
    mySh(i) = Sheets(i).Name
  Next
  Sheets(mySh).Copy

  Application.DisplayAlerts = False
  ActiveWorkbook.SaveAs Filename:=myFile
  Application.DisplayAlerts = True
  ActiveWorkbook.Close
End Sub

シート2枚まとめて1つのブックにコピーということなら

Sub SheetSave2()
  Const N As Long = 2
  Dim myFile As String
  Dim myName As String
  Dim mySh(1 To N) As String
  Dim i As Integer

  myFile = ThisWorkbook.Path & "\" & ActiveSheet.Range("B1").Value & ".xlsx"

  '左から N番目までのシートをコピー
  For i = 1 To N
    mySh(i) = Sheets(i).Name
  Next
  Sheets(mySh).Copy

  Application.DisplayAlerts = False
  ActiveWorkbook.Sav...続きを読む

Qexcelマクロ、任意セルの値で名前を付けて任意のフォルダに保存

マクロの初心者ですが、どうか教えてください。
テンプレートブックを名前を付けて保存するマクロで
苦戦しております。
 ・ダイアログを必ず開く
 ・その時の保存先はz:\あああ
 ・ブック名はアクティブシートの任意のセルA1
---------------------------------------------
Application.Dialogs(xlDialogSaveAs).Show _
Arg1:=Range("A1").Value

ここまではたどり着けたのですが、ダイアログが
当初のテンプレートブックの保存場所が開いてしまいます。

どうぞよろしくお願いいたします。

Aベストアンサー

ふぅむ・・・
なんか説明がマズイようで、申し訳ない

まず、保存の部分は値さえ取れればOKとしまして、ダイアログにデフォルトセットされる部分についてのみです


デフォルトのフォルダを
"z:\■■受注書"
とします(セルZ1にセットしてある)

デフォルトファイル名を
"いいい.xls" 
とします(セルA1にセットしてある/ "いいい"のみでもOK)

MySavePath = Application.GetSaveAsFilename(Range("Z1").Value & "\" & Range("A1").Value, "Excel ファイル (*.xls), *.xls")

GetSaveAsFilenameに入れる値は、最初 "z:\■■受注書\いいい.xls" と言う事になります

本来保存したいところではないので、勘違いしますが、あくまでダイアログのデフォルトにセットする引数なので、問題ありません
上手く行かないようでしたら
これを試して下さい

MySavePath = Application.GetSaveAsFilename("z:\■■受注書\いいい", "Excel ファイル (*.xls), *.xls")

どこを Range("A1").Value と置き換えるかは・・・
まぁ見たままです
文字の連結には『&』を使います


Range("A1").Value = hogehoge としたのは、値がセットされていない事を考慮してです
デフォルトセットする値を取得するセルに、すでにフォルダ名やファイル名がセットされているのであれば、不要な部分です
コメントにして下さい

これで上手く行くと良いですがねぇ

ふぅむ・・・
なんか説明がマズイようで、申し訳ない

まず、保存の部分は値さえ取れればOKとしまして、ダイアログにデフォルトセットされる部分についてのみです


デフォルトのフォルダを
"z:\■■受注書"
とします(セルZ1にセットしてある)

デフォルトファイル名を
"いいい.xls" 
とします(セルA1にセットしてある/ "いいい"のみでもOK)

MySavePath = Application.GetSaveAsFilename(Range("Z1").Value & "\" & Range("A1").Value, "Excel ファイル (*.xls), *.xls")

GetSaveAsFilename...続きを読む

Qエクセルマクロで任意のファイル名をつけて保存したい

 エクセルVBAについての質問です。
 エクセルのマクロで、Aというファイルを開いて、そのうち必要なワークシートだけを抽出し、新しいブックに移動し、その新しいブックを新しいブックのsheet1のセルC2の文字列をファイル名として保存するようなマクロをくみたいと思っています。
 ファイルを開いて必要なワークシートだけを抽出し、新しいブックに移動するところまではできましたが、新しいブックのセルC2の文字列をファイル名として保存することができません。FNを変数として宣言して、C2の文字列を代入し、FNをファイル名として保存しようとすると、ファイルにFNという名前が付いてしまいます。どうすれば、C2の文字列をファイル名として保存できるのでしょうか。なお、保存するフォルダはc:\変換ファイル\6月です。どなたか教えてください。よろしくお願いします。

Aベストアンサー

FNを文字列として扱っていませんか?以下でどうでしょう?


Sub 保存()

Dim FN As String
FN = Range("C2")
ActiveWorkbook.SaveAs Filename:="C:\変換ファイル\6月\" & FN & ".xls"
End Sub

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] ファイル名を変数指定して保存するマクロ

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

Aベストアンサー

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

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

Q複数のシートを別ブックにコピーして保存したい

毎回、シート数が変動するEXCELファイルの、表示されているシートのみ(非表示シート有)を、
別のブックにコピーして、セルの書式と値を貼付けし、
元ファイルのシート名と同じシート名を付けたいのですが、
どんなVBAを組めば良いでしょうか?
下記の様に作成してみましたが、ファイル自体がコピペされてしまう様で、
自分のイメージした通りに動きません・・・。
ご教授の程、宜しくお願いいたします。

Sub データ書き出し()
Dim ws As Worksheet
Dim i As Long
With ActiveWorkbook
i = Worksheets.Count
For j = 1 To i

ThisWorkbook.Worksheets(j).Cells.Copy
.Worksheets(j).Range("A1").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Next j
Application.CutCopyMode = False
.SaveAs "月別DATA_"
End With
End Sub

毎回、シート数が変動するEXCELファイルの、表示されているシートのみ(非表示シート有)を、
別のブックにコピーして、セルの書式と値を貼付けし、
元ファイルのシート名と同じシート名を付けたいのですが、
どんなVBAを組めば良いでしょうか?
下記の様に作成してみましたが、ファイル自体がコピペされてしまう様で、
自分のイメージした通りに動きません・・・。
ご教授の程、宜しくお願いいたします。

Sub データ書き出し()
Dim ws As Worksheet
Dim i As Long
With ActiveWorkbook
i = Workshe...続きを読む

Aベストアンサー

質問の文言と提示のコードには矛盾点、疑問点がありますが、
要するに以下のようなことですか?

元ブック : ThisWorkbook
コピー先 : まとめ.xls

だと仮定して、、

●元ブックの表示シートを"まとめ.xls"にコピーする

●コピーするときは、"まとめ.xls”に既にコピーしてあるシートの次からコピーする
(要するに、まとめ.xlsのシートはコピーするたびに増えていくということです)

●コピーは書式と値のみにする

●コピーしたシート名は、元ブックのシート名と同じにする
(ま、これはシートをコピーすればいいわけですが)
 

もし、このようなことなら以下のコードでもできます。
 
'--------------------------------------------
Sub test()
 Dim MatomeBK As Workbook
 Dim MotoBK As Workbook
 Dim Sht As Worksheet

 Set MotoBK = ThisWorkbook
 Set MatomeBK = Workbooks("まとめ.xls")

 For Each Sht In MotoBK.Worksheets
   If Sht.Visible = True Then
     Sht.Copy After:=MatomeBK.Worksheets(MatomeBK.Worksheets.Count)
     ActiveSheet.Cells.Copy
     ActiveSheet.Cells(1).PasteSpecial Paste:=xlValues
     Application.CutCopyMode = False
   End If
 Next Sht

'● MatomeBK.Close True 'まとめ.xls の上書き保存&CLOSE

End Sub
'----------------------------------------------------

それから、コピー先にコピー元と同じシート名があったらどうするかなど
処理の流れを実際に即しても少し詳しく説明する必要があるでしょう。
以上です。
 
 

質問の文言と提示のコードには矛盾点、疑問点がありますが、
要するに以下のようなことですか?

元ブック : ThisWorkbook
コピー先 : まとめ.xls

だと仮定して、、

●元ブックの表示シートを"まとめ.xls"にコピーする

●コピーするときは、"まとめ.xls”に既にコピーしてあるシートの次からコピーする
(要するに、まとめ.xlsのシートはコピーするたびに増えていくということです)

●コピーは書式と値のみにする

●コピーしたシート名は、元ブックのシート名と同じにする
(ま、これはシ...続きを読む

Qエクセル:マクロ「Application.CutCopyMode = False」って?

エクセルのマクロを記録していると

「Application.CutCopyMode = False」

というものがよく出てきますが、これは何でしょう?
どういう意味のものかわかりません。
削除しても差し支えないのもでしょうか?

Aベストアンサー

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
Range("A1").Select
Selection.Copy
Range("A2").Select
Application.CutCopyMode = False
ActiveSheet.Paste ← ココでエラー
------------
ご自分で、セルをコピーしてみると分かると思いますが、コピーした範囲が点線で点滅されます。
「Application.CutCopyMode = False」をすると、
その点滅がなくなります。

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
...続きを読む

QExcel VBAでシートを新規ブックとして、名前を付けさせて保存するには

こんばんは。質問です。
シートを新規ブックにコピーしたいのですが、その際に
名前を付けて保存のダイアログを出して、名前のボックス
に「シート名」だけを表示させておいて、後は操作者が任意に
名前を追加できるようにして保存するようにするにはどのように
したらいいでしょうか?
例えば、別ブックに保存したいシートが「売上」というシート名
であればダイアログボックスに「売上」と表示させ、操作者は任意で
「売上4月」などとするようにして保存したいということです。
よろしくお願いします。

Aベストアンサー

こんにちは。

新規ブックにコピーしたいシートが
アクティブになっている状態で、
試してみて下さい。

Sub Sample()

With ActiveSheet
.Copy
Application.Dialogs(xlDialogSaveWorkbook).Show .Name & ".xls"
End With

End Sub

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。


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

人気Q&Aランキング