[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルの値をブックの名前にして保存』(たいしょー)
セルB13とセルC13の値を繋げてファイル名とし、指定のフォルダに保存するマクロを作りたいのですが、うまくいきません。
どこが悪いのか、どうかご教示くださいませ。
・作業中のファイルは テスト請求書管理 フォルダにあります。
・B13は ="Q"&TEXT(E1,"yymm")
・C13は別のマクロの命令で 1 を 00001 と表示させています。
C13は 00002、00003、00004… のように変動します。
・新しく保存するファイル名は
Q140900001.xlsm
としたいのです。
Sub 保存()
ThisWorkbook.SaveAs Filename:="C:\Users\ユーザー名\Documents\テスト請求書管理\請求書個別フォルダ\" & Range("B13") & Range("C13") & ".xlsm"
End Sub
< 使用 Excel:Excel2013、使用 OS:Windows7 >
Option Explicit
Sub スタート()
'
' スタートMacro
'ここから初期化作業
Dim rc As Integer Range("B14:B20,E15:E35,G15:G35,J15:J35").Select
If Application.CountA(Range("B14:B20,E15:E35,G15:G35,J15:J35")) > 0 Then '入力があればTrueでこのメッセージがでます rc = MsgBox("入力があります。初期化すると元に戻せません。初期化しますか?", vbYesNo + vbDefaultButton2)
If rc = vbYes Then Range("B14:B20,E15:E35,G15:G35,J15:J35").ClearContents 'ここから新規管理ナンバーを振る作業
Dim range1 As Range
Windows("管理用ファイル.xlsx").Activate
Set range1 = Range("A1").End(xlDown)
Windows("請求書フォーム.xlsm").Activate
Range("c13").NumberFormatLocal = "00000"
Range("C13").Value = range1 + 1
Else
Range("B15").Select
End If
Else 'ここから新規管理ナンバーを振る作業
Windows("管理用ファイル.xlsx").Activate
Set range1 = Range("A1").End(xlDown)
Windows("請求書フォーム.xlsm").Activate
Range("c13").NumberFormatLocal = "00000"
Range("C13").Value = range1 + 1 ←ここで「型が一致しません」とエラーが出てしまいます。
End If
End Sub
(たいしょー) 2014/09/21(日) 17:50
>指定のフォルダに保存するマクロを作りたいのですが、うまくいきません。 どのようにうまくいかないのか、書いておかれると良いと思いますが。
Q140900001.xlsmとしたいのにQ14091.xlsmになってしまう と言う事であれば、 Range("C13") の値を「00000」の形にしてからくっつけるか、 Range("B13").Value & Format(Range("C13").Value, "00000") Textで取得する様にしてはどうでしょう? Range("B13").Text & Range("C13").Text
>Range("C13").Value = range1 + 1←ここで「型が一致しません」とエラーが出てしまいます。
>Dim range1 As Range >Set range1 = Range("A1").End(xlDown) としてあるので、range1には 値が入っているのではなく Range("A1").End(xlDown)のセルがセットされています。
range1の値に+1 するか range1.Value + 1 そもそも、値を入力する様にしてはどうですか? Dim range1 As Long range1 = Range("A1").End(xlDown).Value (HANA) 2014/09/21(日) 18:37
コメントいただきましてありがとうございます。
>Sub 保存()
> ThisWorkbook.SaveAs Filename:="C:\Users\ユーザー名\Documents\テスト請求書管理\請求書個別フォルダ\" & Range("B13") & Range("C13") & ".xlsm"
> End Sub
こちらに関してましては、実行すると
実行時エラー'1004':
'SaveAs'メソッドは失敗しました':_Workbook'オブジェクト
とメッセージが表示されます。
>Range("C13").Value = range1 + 1←ここで「型が一致しません」とエラーが出てしまいます
こちらに関しましては、
Set range1 = Range("A1").End(xlDown).Value
とすることで回避できました。
ただ、
'ここから新規管理ナンバーを振る作業 Workbooks.Open "C:\Users\qinos.fukuda\Documents\テスト請求書管理\管理用ファイル.xlsx"
Windows("管理用ファイル.xlsx").Activate
Set range1 = Range("A1").End(xlDown).Value ←ここでエラーがでます。
Windows("請求書フォーム.xlsm").Activate
Range("c8").NumberFormatLocal = "00000"
Range("C8").Value = range1 + 1
と記述しなおしたところ、
実行時エラー'424':
オブジェクトが必要です。
とエラーメッセージが出てしまいました。
これを回避するにはどのようにしたらよいでしょうか?
(たいしょー) 2014/09/21(日) 20:12
>こちらに関してましては、実行すると 実行したコードを載せてもらえますか?
>Set range1 = Range("A1").End(xlDown).Value ←ここでエラーがでます。 よく見て下さい。
>> Dim range1 As Long >> range1 = Range("A1").End(xlDown).Value (HANA) 2014/09/21(日) 20:19
>実行したコード
は以下です↓↓↓
Sub 請求書を印刷()
'
' 請求書を印刷 Macro
'
Range("C13").Select Selection.Copy Windows("管理用ファイル.xlsx").Activate Columns("A:A").Select Selection.End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Windows("請求書フォーム.xlsm").Activate
Range("B15").Select Application.CutCopyMode = False Selection.Copy Windows("管理用ファイル.xlsx").Activate Columns("B:B").Select Selection.End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Windows("請求書フォーム.xlsm").Activate
Range("B16").Select Application.CutCopyMode = False Selection.Copy Windows("管理用ファイル.xlsx").Activate Columns("C:C").Select Selection.End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Windows("請求書フォーム.xlsm").Activate
Range("B20").Select Application.CutCopyMode = False Selection.Copy Windows("管理用ファイル.xlsx").Activate Columns("D:D").Select Selection.End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Windows("請求書フォーム.xlsm").Activate
Range("K36").Select Application.CutCopyMode = False Selection.Copy Windows("管理用ファイル.xlsx").Activate Columns("E:E").Select Selection.End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
Windows("請求書フォーム.xlsm").Activate
Sheets("請求書").Select ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True, _ ignoreprintareas:=False
MsgBox "印刷しました。管理用ファイルに保存します。", vbOKOnly
'新しいブックに名前をつけて保存 ThisWorkbook.SaveAs Filename:="C:\Users\qinos.fukuda\Documents\テスト請求書管理\請求書個別フォルダ\" & Range("B13") & Range("C13") & ".xlsm"
End Sub
の中の最後の過程としてファイルを作って保存しようとしています。
> >> Dim range1 As Long
> >> range1 = Range("A1").End(xlDown).Value
見逃していました。.valueだけつければいいと思っていました。
ありがとうございます。
しかし、また新たなエラーがでてしまいました。
Sub スタート()
'
' スタートMacro
'ここから初期化作業
Dim rc As Integer Range("B9:B14,E8:E28,G8:G28,J8:J28").Select
If Application.CountA(Range("B9:B14,E8:E28,G8:G28,J8:J28")) > 0 Then '入力があればTrueでこのメッセージがでます rc = MsgBox("入力があります。初期化すると元に戻せません。初期化しますか?", vbYesNo + vbDefaultButton2)
If rc = vbYes Then Range("B9:B14,E8:E28,G8:G28,J8:J28").ClearContents 'ここから新規管理ナンバーを振る作業
Dim range1 As Long
Workbooks.Open "C:\Users\qinos.fukuda\Documents\テスト請求書管理\管理用ファイル.xlsx"
Windows("管理用ファイル.xlsx").Activate
range1 = Range("A1").End(xlDown).Value ★
Windows("請求書フォーム.xlsm").Activate
Range("c8").NumberFormatLocal = "00000"
Range("C8").Value = range1 + 1
Else
Range("B15").Select
End If
Else 'ここから新規管理ナンバーを振る作業 Workbooks.Open "C:\Users\qinos.fukuda\Documents\テスト請求書管理\管理用ファイル.xlsx"
Windows("管理用ファイル.xlsx").Activate
range1 = Range("A1").End(xlDown).Value ←ここでエラーが出ます。
Windows("請求書フォーム.xlsm").Activate
Range("c8").NumberFormatLocal = "00000"
Range("C8").Value = range1 + 1
End If
End Sub
エラーメッセージ
実行時エラー'13':
型が一致しません。
★のところでエラーがでないのはなぜでしょうか?
(たいしょー) 2014/09/21(日) 22:08
> ThisWorkbook.SaveAs Filename:="C:\Users\qinos.fukuda\Documents\テスト請求書管理\請求書個別フォルダ\" & Range("B13") & Range("C13") & ".xlsm" 最初のコードと同じ様ですが?
>range1 = Range("A1").End(xlDown).Value ←ここでエラーが出ます。 >エラーメッセージ >実行時エラー'13': >型が一致しません。 Range("A1").End(xlDown)のセルの値は何ですか?
MsgBox Range("A1").End(xlDown).Value 等を入れて確認してみて下さい。 数以外が入っていたら、「型が一致しません。」のエラーになります。 (HANA) 2014/09/21(日) 22:17
ちなみに、保存の方ですが 実行時エラー'1004': 'SaveAs'メソッドは失敗しました':_Workbook'オブジェクト は、他に何もメッセージがなく いきなり表示されるのでしょうか?
また、念のため メッセージボックス等で Range("B13") と Range("C13") の値がどうなっているか 確認してみてもらえますか? (HANA) 2014/09/21(日) 23:11
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.