Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2941 / 13644 ツリー ←次へ | 前へ→

【65107】ブック作成後、シートのコピー おとと 10/4/17(土) 10:28 質問[未読]
【65108】Re:ブック作成後、シートのコピー かみちゃん 10/4/17(土) 10:44 発言[未読]
【65109】Re:ブック作成後、シートのコピー かみちゃん 10/4/17(土) 10:58 発言[未読]
【65110】Re:ブック作成後、シートのコピー おとと 10/4/17(土) 11:37 お礼[未読]
【65111】Re:ブック作成後、シートのコピー おとと 10/4/17(土) 11:59 お礼[未読]
【65112】Re:ブック作成後、シートのコピー おとと 10/4/17(土) 15:30 質問[未読]
【65113】Re:ブック作成後、シートのコピー かみちゃん 10/4/17(土) 16:47 発言[未読]
【65114】Re:ブック作成後、シートのコピー おとと 10/4/17(土) 17:04 質問[未読]
【65115】Re:ブック作成後、シートのコピー かみちゃん 10/4/17(土) 17:13 発言[未読]
【65117】Re:ブック作成後、シートのコピー おとと 10/4/17(土) 18:10 質問[未読]
【65120】Re:ブック作成後、シートのコピー かみちゃん 10/4/17(土) 18:57 発言[未読]
【65151】Re:ブック作成後、シートのコピー おとと 10/4/20(火) 8:41 質問[未読]
【65159】Re:ブック作成後、シートのコピー かみちゃん 10/4/20(火) 20:39 発言[未読]

【65107】ブック作成後、シートのコピー
質問  おとと  - 10/4/17(土) 10:28 -

引用なし
パスワード
   以前、枠線の非表示でお世話になりました。

今回は、新規ブックを作成させてそのブックにシートを
コピーしたいと思っています。以前も利用していた下記
コードで’シート1書き込みの所にマクロで記録した
コードを入れたのですがエラーになってしまいます。
なにせ初心者なので見当違いの質問かもしれませんが
よろしくお願いします。


Private Sub CommandButton2_Click()

Dim objApp  'Excelアプリ
Dim objBook  'ExcelBook
Dim objSheets  'ExcelSheets
Dim objSheet  'ExcelSheet
Dim strMsg  'エラーメッセージ
Dim strXlsPath  '保存Excelファイル
Dim i
Dim xlNormal

Dim myDate As String

xlNormal = -4143

'Excel の保存先
myDate = Format(ActiveSheet.Range("f14"))
myDate2 = Format(ActiveSheet.Range("w14"))
strXlsPath = "C:\Documents and Settings\sim\デスクトップ\" _
& myDate & myDate2 & ".xls"

'=====================================================================
'Excelを起動する
'=====================================================================
On Error Resume Next
Err.Clear
Set objApp = CreateObject("Excel.Application")
If Err Then
  'エラー処理
  strMsg = strMsg & "Excelを起動できませんでした" & vbCrLf
  strMsg = strMsg & "Err.Number:" & Err.Number & vbCrLf
  strMsg = strMsg & "Err.Description:" & Err.Description & vbCrLf
End If
'エラー処理の初期化
On Error GoTo 0
If strMsg <> "" Then
  'エラーメッセージの表示
  MsgBox strMsg, vbCritical, "Excel の作成"
Else
  '===================================================================
  '新規ワークシートを作成
  '===================================================================
  objApp.Workbooks.Add
  '非表示にする
  objApp.Application.Visible = False
  '確認ダイアログを表示させない
  objApp.DisplayAlerts = False
  
  Set objBook = objApp.ActiveWorkbook
  Set objSheet = objBook.Sheets(1)
  シート1のみ残して後は削除
  For i = 2 To objSheets.Count
    objBook.Sheets(2).Delete
  
    
  Next

  'シート1の書き込み
  'Set objSheets = Sheets("作業シート")
  Sheets("作業シート").Copy Before:=Workbooks(objBook).Sheets(1)


  '新規ブックを保存
  objBook.SaveAs Filename:=strXlsPath, _
          FileFormat:=xlNormal, _
          Password:="", _
          WriteResPassword:="", _
          CreateBackup:=False
          '読み取り専用で
          'ReadOnlyRecommended:=True,


  'Excelの終了
  objApp.DisplayAlerts = True    '確認ダイアログを表示させる
  objBook.Close
  objApp.Quit

  'オブジェクトの解放
  Set objSheet = Nothing
  Set objSheets = Nothing
  Set objBook = Nothing
  Set objApp = Nothing

  'エラーメッセージの表示
  MsgBox "Excel を作成しました。", vbInformation, "Excel の作成"

End If

End Sub

【65108】Re:ブック作成後、シートのコピー
発言  かみちゃん E-MAIL  - 10/4/17(土) 10:44 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>エラーになってしまいます。

どういうエラーメッセージがどのコードで発生しているのでしょうか?
エラーメッセージが表示されたら、デバッグボタンをクリックすればわかると思いますが・・・

>なにせ初心者なので

Set objApp = CreateObject("Excel.Application")
というような処理をしようとしているのはなぜですか?

Sheets("作業シート").Copy Before:=Workbooks(objBook).Sheets(1)
このコードが非常に怪しいです。

Sub Sample()
 Sheets("作業シート").Copy
End Sub
このコードだけで新規ブックにシートがコピーされるのはわかりますか?

【65109】Re:ブック作成後、シートのコピー
発言  かみちゃん E-MAIL  - 10/4/17(土) 10:58 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Sub Sample()
> Sheets("作業シート").Copy
>End Sub
>このコードだけで新規ブックにシートがコピーされるのはわかりますか?

全体のコードを見直すとすれば、以下だけでできるような感じがします。
保存ファイル名の正当性チェックはしていません。

Sub Sample()
 Dim strXlsPath As String
 
 With ActiveSheet
  'デスクトップパスの取得
  strXlsPath = CreateObject("Wscript.Shell").SpecialFolders("Desktop") & "\"
  '保存ファイルフルパスの生成
  strXlsPath = strXlsPath & Range("F14").Value & .Range("W14").Value & ".xls"
 End With
 
 'シートを新規ブックにコピー
 Sheets("作業シート").Copy
 
 '新規ブックを保存
 ActiveWorkbook.SaveAs Filename:=strXlsPath, _
         FileFormat:=xlNormal, _
         Password:="", _
         WriteResPassword:="", _
         CreateBackup:=False
 ActiveWorkbook.Close
 
 MsgBox "Excel を作成しました。", vbInformation, "Excel の作成"
End Sub

【65110】Re:ブック作成後、シートのコピー
お礼  おとと  - 10/4/17(土) 11:37 -

引用なし
パスワード
   かみちゃんさん、早速の回答有難う御座います。

先ほど返信した所、新しく回答を頂いていたようで消去
させていただきました。

新しくコードを書いて頂き有難う御座います。早速試して
みます。取り急ぎお礼をさせていただきます。

【65111】Re:ブック作成後、シートのコピー
お礼  おとと  - 10/4/17(土) 11:59 -

引用なし
パスワード
   かみちゃんさん、早速書いていただいたコードを試しました。
思い通りの結果を得る事が出来ました。

ありがとうございました。

【65112】Re:ブック作成後、シートのコピー
質問  おとと  - 10/4/17(土) 15:30 -

引用なし
パスワード
   かみちゃんさんたびたびすみません。
出来たと思って返信をしたのですが最終段階でうまくいきませんでした。
ファイルをデスクトップに置いている状態ではうまく動作しています。

実はグループウェアソフトでの利用を考えています。元書類となるエク
セルをグループウェア内に置いて各自PCのデスクトップにそのエクセ
ルを保存したいのです。保存書類にはマクロをなくしたいのでシート1
に保存ボタンを置いて保存シートにコピーした後、その保存シートをデ
スクトップに作成したエクセルにコピーしたいのです。

グループウェアで上で教えていただいたコードで作動させると元エクセ
ルに保存シート(2)がプラスされたものが出来上がってしまいます。

もしよろしければご教授ください。よろしくお願いします。

【65113】Re:ブック作成後、シートのコピー
発言  かみちゃん E-MAIL  - 10/4/17(土) 16:47 -

引用なし
パスワード
   こんにちは。かみちゃん です。
>グループウェアで上で教えていただいたコードで作動させると元エクセ
>ルに保存シート(2)がプラスされたものが出来上がってしまいます。

どのグループウェアをお使いなのかわかりませんが、
グループウェアに置いてある、ファイルを直接開いているのですね?
そのファイルに
Sub Sample()
 Sheets("作業シート").Copy
End Sub
というコードだけを実行すると、「作業シート (2)」 という名前のシートが
同じブックにできるのですか?

そうなると、別の案を考える必要がありますね。

【65114】Re:ブック作成後、シートのコピー
質問  おとと  - 10/4/17(土) 17:04 -

引用なし
パスワード
   かみちゃんさん、たびたび有難う御座います。
>どのグループウェアをお使いなのかわかりませんが、
>グループウェアに置いてある、ファイルを直接開いているのですね?
はい、そうです。

>そのファイルに
>Sub Sample()
> Sheets("作業シート").Copy
>End Sub
>というコードだけを実行すると、「作業シート (2)」 という名前のシートが
>同じブックにできるのですか?
はい、そうです。また、一回目はデスクトップにブック(作業シート(2)付き)
が出来たのですが2回目からは新規ブックの作成でエラーになってしまいます。

【65115】Re:ブック作成後、シートのコピー
発言  かみちゃん E-MAIL  - 10/4/17(土) 17:13 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>はい、そうです。また、一回目はデスクトップにブック(作業シート(2)付き)
>が出来た

一回目のコードとは、どのようなコードですか?
一回目は、「作業シート (2)」 というシートが同じブックにできていないのではないですか?

> 2回目からは新規ブックの作成でエラーになってしまいます。

どのようなエラーメッセージがどのコードで出ますか?

一回目も二回目も、グループウェアのファイルを直接開いているのですよね?

【65117】Re:ブック作成後、シートのコピー
質問  おとと  - 10/4/17(土) 18:10 -

引用なし
パスワード
   かみちゃんさん、お付き合い有難う御座います。

>どのようなエラーメッセージがどのコードで出ますか?
'SaveAs'メソッドは失敗しました:'_Worlbook'オブジェクト
がでました。すみません、これは新規ブック作成時に参照するf14tとw14
が空欄の時に出るようなので私の勘違いのようです。なので一回目も二回
目も同じ動きです。

>一回目も二回目も、グループウェアのファイルを直接開いているのですよね?
はい、そうです。

【65120】Re:ブック作成後、シートのコピー
発言  かみちゃん  - 10/4/17(土) 18:57 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>がでました。すみません、これは新規ブック作成時に参照するf14tとw14
>が空欄の時に出るようなので私の勘違いのようです。なので一回目も二回
>目も同じ動きです。
>
>>一回目も二回目も、グループウェアのファイルを直接開いているのですよね?
>はい、そうです。

ちょっと再度確認させてください。

グループウェアのファイルを直接開いていて、アクティブにしておいた状態で、
以下のコードだけを実行すると、新規ブックが作成されませんか?

Sub Sample()
 Sheets("作業シート").Copy
End Sub

【65151】Re:ブック作成後、シートのコピー
質問  おとと  - 10/4/20(火) 8:41 -

引用なし
パスワード
   かみちゃんさん、返信送れてすみません。

>グループウェアのファイルを直接開いていて、アクティブにしておいた状態で、
>以下のコードだけを実行すると、新規ブックが作成されませんか?
>
>Sub Sample()
> Sheets("作業シート").Copy
>End Sub

上記コードのみでテスト用のブックを作って実行してみました。
やはり新規のブックは作成されずそのブックに作業シート(2)
が作成されます。

【65159】Re:ブック作成後、シートのコピー
発言  かみちゃん  - 10/4/20(火) 20:39 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>上記コードのみでテスト用のブックを作って実行してみました。
>やはり新規のブックは作成されずそのブックに作業シート(2)
>が作成されます。

グループウェアの環境がないので、これ以上、私にはわかりません。
申し訳ありません。他の方の回答をお待ちください。

2941 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free