2017-01-19 12 views
1

フォーラムでいくつかの関連記事を読んでみましたが、コードを作成したり、いくつかの関数の構文を理解できませんでした。複数のシートを特定のファイル形式の新しいブックに保存

私はさわやかな方法で行うことがしたいのかを説明しようとします:

  • 私は、複数のシート(シート1、シート2 ...シート5)とワークブックを持っていると私は作成したいですファイル形式は、Microsoft Excelのワークシート97-2003(.XLS)

  • でなければなりません

  • 新作帳のみを含むシート1、シート2とシート3として保存するマクロを割り当てられたボタンマクロ割り当てボタンをクリックすると、保存先ダイアログボックスがポップアップし、宛先と選択的に新しいファイル名を選択できるようになります(あらかじめ割り当てられたファイル名は "textstring123"にすることができます)

  • ブックを保存した後古いブックが最小化されている間にユーザーが検査できるようにする

関連する場合は、Excel 2013を使用しています。

投稿が粗末に見えるかもしれませんが、私は最後の1日半の間に私の頭を壊しており、これがなければ私のマクロプロジェクトの残りは無駄になります。事前にありがとう、提案/助言/助けてくれてありがとう。

その他の詳細や説明が必要な場合は、お尋ねください。

私が作ったコード行を追加しましたが、正しく動作しないようです。

Sub Macro6() 
' 
' Macro6 Macro 
' Save as 
'' 
Dim varResult As Variant 
Sheets(Array("sheet1", "sheet2", "sheet3")).Copy 
varResult = Application.GetSaveAsFilename(FileFilter:= _ 
      "Excel Files *.xls", FileFormat:=-57, Title:="Save File", _ 
      InitialFileName:=ActiveWorkbook.Path \ Textstring123.xls) 
If varResult <> False Then 
ActiveWorkbook.SaveAs Filename:=varResult, _ 
FileFormat:=xlWorkbookNormal 

    Exit Sub 
    End If 

End Sub 

Highlighted in yellow is the line where debugger gives runtime error

+0

ようこそ!たとえそれが動作していなくてもコードを投稿すれば、あなたはちょうどいくつかのコードを注文していて、あなたが試したことを示しているようには見えません! ;) – R3uK

+1

提案をありがとう、私はコードを追加しました。私が望む最後のものは、私のために誰かのコードを作ることです、私はただ探検して学びたいですが、私は目が見えず、貴重な指導が必要です。 – UK97

+0

@ R3uKデバッガのスクリーンショットを添付しました。問題を解明できませんでした。 – UK97

答えて

1

これは、トリックを行います私はエラー処理のビットを追加しましたので、私はフィルタに問題があります!

Option Explicit 

Sub Macro6() 
' 
' Macro6 Macro 
' Save as 
'' 
Dim tB As Excel.Workbook 
Dim wB As Excel.Workbook 
Dim ExportArray As Variant 
Dim ShName As Variant 
Dim ExportName As String 

Dim varResult As Variant 

Set tB = ThisWorkbook 
ExportArray = Array("sheet1", "sheet2", "sheet3") 

For Each ShName In ExportArray 
    Debug.Print ShName 
    tB.Sheets(ShName).Copy 
    Set wB = ActiveWorkbook 
    On Error Resume Next 
     ExportName = Application.GetSaveAsFilename(tB.Path & "\Textstring123", "Excel Files *.xls", , "Save " & ShName) 
     If Err.Number > 0 Then 
      ExportName = Application.GetSaveAsFilename(tB.Path & "\Textstring123", , , "Save " & ShName) 
     Else 
      'No error, everything went well with filters 
     End If 
    On Error GoTo 0 

    'String 8 and Boolean 11 
    If VarType(ExportName) <> 8 Then 
     Exit Sub 
    Else 
     wB.SaveAs Filename:=ExportName, FileFormat:=xlWorkbookNormal 
    End If 
    DoEvents 
    wB.Close 
Next ShName 

End Sub 
+0

お返事ありがとうございます、私はまだコードと学習を理解しています。コードを実行しようとすると、実行時エラー9が発生します:添字が範囲外です。ハイライト表示されているコード行は tB.Sheets(ShName).Copy Array()では、シート名ではなく、割り当てられた名前を使用してシートを参照しています。それは正しい治療の権利ですか? – UK97

+0

@ UK97:エクスポートするシートの名前を 'ExportArray = Array(" ... "、" ... "、...)' – R3uK

+0

にする必要がありますその行の前に定義されていませんか?はいの場合、その変数をどのように定義しますか? – UK97

関連する問題