2017-02-13 17 views
0

既存のブックを開いて、同じブックでコードを実行できるようにしたいのですが、VBAを使用してExcelブックを開く

私はVBAに関する知識があまりなく、誰かが助けてくれることを望んでいました。私の研究では、ファイルへのマッピングがマクロコードに貼り付けられている場合、ワークブックを開いて同じワークブックでコードを実行できることが分かりました。私はそれを選択するために開いているダイアログボックスを使用することができるようにしたい。このコード:

Option Explicit 
Private Sub CommandButton1_Click() 

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer, fd As Office.FileDialog 

Set fd = Application.FileDialog(msoFileDialogFilePicker) 

With fd 

.AllowMultiSelect = False 

.Title = "Please select the file." 

.Filters.Clear 
.Filters.Add "Excel 2003", "*.xls?" 

If .Show = True Then 
fileName = Dir(.SelectedItems(1)) 

End If 
End With 

Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

Workbooks.Open (fileName) 

For Each sheet In Workbooks(fileName).Worksheets 
total = Workbooks("import-sheets.xlsm").Worksheets.Count 
Workbooks(fileName).Worksheets(sheet.Name).Copy _ 
after:=Workbooks("import-sheets.xlsm").Worksheets(total) 
Next sheet 

Workbooks(fileName).Close 

Application.ScreenUpdating = True 
Application.DisplayAlerts = True 

開いているダイアログボックスでファイルを選択できますが、ブックが新しいウィンドウで開きます。選択したブックの内容をブランクにコピーして残りのコードを実行できるように変更する方法はありますか?

私のコードの残りの部分は含まれていませんでした。なぜなら、この質問は十分に長く、当時の問題には関係しないからです。私がそれを含めると役に立つと思ったら私に教えてください。私は質問を編集します。

答えて

0

構文は間違っていますが、エラーメッセージが生成されないのは驚きです。変数に新しくオープンしたブックを割り当ててみた後、例えば、次のように、それを通じて参照:

Dim ImportBook as Workbook 
Dim ExportBook as Workbook 

Set ImportBook = Workbooks.Open (fileName) 
Set ExportBook = Workbooks.Open ("import-sheets.xlsm") 

それはあなたが全体のワークブックのコピーを作成し、それを保存してやっているように見えますが新しいファイルを作成することができます。その場合は、一度に1つのシートよりも優れた方法があります。

Workbook.SaveAsの方法はここでより適切でしょうか?

関連する問題