Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2013)
Excelで別bookで用意してあるフォーマットにコピーしてファイルを新規作成したい
投稿日時: 19/12/02 15:21:01
投稿者: naolalala

見積もり一覧から見積もりを作成するマクロを作っています。
先日まできちんと動いていたのですが、なぜか一覧でマクロを実行すると一覧のファイルにコピーしてしまうようになりました。
(別ファイルを開いてコピーしてくれない)
 
見積フォーマット.xlsmというファイルを同じフォルダ内のtempというフォルダにいれてあり、そのフォーマットを開いてコピーし、別の名前で保存するというマクロです。
 
以前同じことがあったときは、見積フォーマット.xlsmのファイルを開いている状態だと同じようなことが起こりましたが、今回は閉じています。
何が悪いのかおわかりになりますでしょうか?
 
Sub 見積作成()
 
' row: アクティブセルの行番号
' estimate_No: 見積もり番号
' tanto: 担当者名
' hiduke: 日付
' seikyu: 取引先名(請求先)
' seikyu_tanto: 担当(請求先)
' client: 取引先名(クライアント)
' send: 請求書送付方法
' mailaddress: メールアドレス
' commission: 代理店手数料
' anken: 案件名
 
ActiveWorkbook.Save
 
On Error Resume Next
    Row = ActiveCell.Row
    If Cells(Row, 2) = "" Or Cells(Row, 3) = "" Or Cells(Row, 4) = "" Or Cells(Row, 5) = "" Or Cells(Row, 6) = "" Or Cells(Row, 7) = "" Then
        MsgBox ("見積書作成のための情報をすべて入力して下さい")
        Exit Sub
    End If
     
    estimate_No = Cells(Row, 1).Value
    tanto = Cells(Row, 2).Value
    hiduke = Cells(Row, 3).Value
    seikyu = Cells(Row, 4).Value
    seikyu_tanto = Cells(Row, 5).Value
    client = Cells(Row, 6).Value
    send = Cells(Row, 7).Value
    mailaddress = Cells(Row, 8).Value
    commission = Cells(Row, 9).Value
    anken = Cells(Row, 10).Value
     
    ChDir ThisWorkbook.Path & "\"
    Workbooks.Add _
        ThisWorkbook.Path & "\temp\見積フォーマット.xlsm"
    Sheets("メニュー").Select
    Range("C1").Value = estimate_No
    Range("C2").Value = hiduke
    Range("C3").Value = seikyu
    Range("C4").Value = seikyu_tanto
    Range("C5").Value = client
    Range("C6").Value = tanto
    Range("C7").Value = send
    Range("C8").Value = mailaddress
    Range("C9").Value = commission
    Range("C13").Value = anken
     
    ActiveWorkbook.SaveAs Filename:= _
    ThisWorkbook.Path & "\1期_請求書\" & estimate_No & "_" & seikyu & "_" & client, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub

回答
投稿日時: 19/12/02 19:39:28
投稿者: simple

よくわかりませんが、
On Error Resume Next
というのが無造作に置いてありますよね。
これは何を目的にしていますか?
特定の目的のために使用したとしても、
できるだけ早期に On Error GoTo 0 として、通常モードに戻すのが普通です。
 
エラーが実際に起きていても、それを知らせてくれません。
いったん、それを無効にして(コメントにしてしまって)実行して見て下さい。
何かエラーが起きていませんか?

回答
投稿日時: 19/12/02 20:39:14
投稿者: WinArrow
投稿者のウェブサイトに移動

名前を付けて保存(SaveAsメソッド))のファイル名に
client
という変数を使っているが、「値」には、ファイル名にできる文字が入っているのでしょうか?
例えば、拡張子は?

投稿日時: 19/12/03 11:25:59
投稿者: naolalala

すみません、質問の仕方が悪かったです。
 
こちら、おそらく問題があるのは
 
    ChDir ThisWorkbook.Path & "\"
       Workbooks.Add _
       ThisWorkbook.Path & "\temp\見積フォーマット.xlsm"
 
このあたりではないかと思います。
このマクロが保存してあるファイルでマクロを実行すると、
見積フォーマット.xlsmのファイルを新規ファイルとしてコピーしたいのですが、
現状は実行すると、見積フォーマット.xlsmが開きません。
このマクロが保存してあるファイル自体にデータを書き込みしてしまいます。
 
今まではうまく動いていたので、原因がよくわかりません。。
何か別の方法などおわかりになりますでしょうか?

回答
投稿日時: 19/12/03 12:34:07
投稿者: simple

別に質問の仕方は悪くないでしょう。
 
私の提案は実行してみてどうでしたか。
 
さらに言えば、
ステップ実行して、どこで想定と異なるか
自分で調べて下さい。
あなたしかいませんよ、確認できるのは。
待っているだけでは解決しません。

回答
投稿日時: 19/12/03 13:00:23
投稿者: simple

繰り返しますが、テンプレート指定の新規ブック作成のコード自体は問題がないのでしょう。
今まで動いていたのですから。
それにこちらでは、そうしたことは再現しません。
 
テンプレートファイルのパス指定が間違っているか、ファイルがないかでしょう。
普通であれば、なんらかのエラーメッセージが出るはず。
提示されていない部分で文法的なエラーになっているのかもしれない。
On Error Resume Nextと書いているばっかりに、
エラーメッセージを出さずに通り過ぎてしまうわけです。
 
だから、そのOn Error Resume Nextを消してみれば、
なんらかのエラーメッセージが出るはずだ、と申し上げているのだが、
それについての反応は一切ない。
別の要因かもしれないが、なんらかの情報は得られるはず。
これじゃ会話になりません。

投稿日時: 19/12/03 13:28:01
投稿者: naolalala

simple様
色々とすみません。
 
On Error Resume Nextを無効にしてみたところ、
>ActiveX コンポーネントはオブジェクトを作成できません。
とエラーが表示されました。
 
>テンプレートファイルのパス指定
とおっしゃっていたので、フォルダの指定を相対パスから絶対パスに書き換えてみたところ、
動きました!
 
>WinArrow様
clientには通常の文字列が入っておりました。
ファイル名を指定して保存する部分もフォルダの指定を相対パスから絶対パスに書き換えてみたところ、
動きました!
 
ありがとうございました!