|    | 
     こんばんわ。 
タイトルの事をやろうとしていますが、行き詰っております。 
 
少し量が多いのですが・・・・ 
もし、ご助力いただけましたら宜しくお願いいたします。 
 
もう少し詳しく、やりたいことを書かせていただきますと 
 
1.ユーザーフォームを使用し、マクロを使用しているExcelファイルとは別のExcelファイルを開く 
 
2.新しく開いたExcelファイルからコピー元となるシートを選択する。 
 
3.シートをコピーし、名前を変更 
 
4.もし、同名シートがあった場合は元々あったシートを削除し、コピーしたシートにその名前を使う。 
 
5.1で開いたExcelファイルのみを閉じる。 
 
6.次のユーザーフォームを開く。 
 
7.次のユーザーフォームでこの作業をやり直すコマンドを作成し、ファイルを開く作業からやり直す。 
 
 
困ってる点は 
*2でシートを選択しようとクリックするとエラーが出る。(Excel2003のみ) 
 
*4の作業が行われない。(Excel2003のみ) 
 
*5の作業が行われない、もしくはエラーがでる(2003.2007両方) 
 
*7の作業を行った際、ファイルを開く作業を終了させたと同時に次で開いたユーザーフォームまで一緒に消えてしまう(Excel2007のみ) 
 
2003と2007両方で行おうとしているため、より難しくなってしまっています・・・。 
二つでVBAの内容が若干変わっているのは知っていたのですが。。。まさかここまで違うとは思いませんでした・・・。 
 
下記に私の作ったプログラムを記述します。 
 
Private Sub CommandButton1_Click() 
On Error Resume Next 
 
Dim Worksheet As String 
Dim MyFileName, MyFileName2 As String 
Dim MyWSName, MyWSName2 As String 
Dim MyWS As Worksheet 
 
MyFileName = Application.GetOpenFilename _ 
  (Filefilter:="2003Excelファイル(*.xls), *.xls,2007Excelファイル(*.xlsx), *.xlsx", _ 
    Title:="Excelファイルの読み込み") 
 
If MyFileName = "False" Then Exit Sub 
 
Workbooks.Open MyFileName 
 
MsgBox "今開いたExcelファイルのシートの中からコピーするシートを選び、アクティブ状態にしてください。" & vbNewLine & _ 
      "もしよろしければOKを押してください。", vbExclamation 
       
MyWSName = ActiveSheet.Name 
 
Worksheets(MyWSName).Copy after:=ThisWorkbook.ActiveSheet 
 
MyWSName2 = "AAA" 
 
For Each MyWS In Worksheets 
If MyWSName = MyWSName2 Then 
  Application.DisplayAlerts = False 
  Worksheets("AAA").Delete 
  Applicarion.DisplayAlerts = True 
End If 
Next 
 
ActiveSheet.Name = MyWSName2 
 
If vbYes = MsgBox("今開いたファイルを閉じますか?", vbQuestion + vbYesNo) Then 
Workbooks(MyFileName).Close 
End If 
 
Unload Me 
 
'次のユーザーフォーム.Show 
 
UserForm1.Show 
 
End Sub 
 
宜しくお願いいたします。 
 
 | 
     
    
   |