1
私は次の操作を行うために探しています:先のワークシートにVBAのデータのインポート - 変数ワークシート名
- CommandButtonをA検索
- (どちらを選択するためのダイアログボックス)ソースファイルを開きます
- セルの範囲をコピーします(実際には2つの別々の範囲 - 追加されます)
- セルと同じ名前のワークシート(常に同じ名前 - 「パフォーマンス」)ソースシート内のI2)が存在する 先の同じ範囲に
- 貼り値ワークシート
- は、ソースファイル
を閉じ、私は今のところ、これを持っている:
Private Sub CommandButton1_Click()
Dim SourceFile As String
Dim SourceBook As Workbook
Dim DestinationBook As Workbook
Dim desiredName As String
Set DestinationBook = ThisWorkbook
SourceFile = Application.GetOpenFilename(fileFilter:="Excel Macro-Enabled Workbook (*.xlsm), *.xlsm")
Set SourceBook = Workbooks.Open(SourceFile)
SourceBook.Sheets("Performance").Activate
desiredName = ActiveSheet.Range("I2")
Application.CutCopyMode = True
SourceBook.ActiveSheet.Range("E25:I64").Copy
DestinationBook.Activate
If WorksheetExists = False Then
MsgBox "Couldn't find " & desiredName & " sheet within destination workbook"
Call SourceBook.Close(False)
Exit Sub
Else
Range("E25:I64").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Call SourceBook.Close(False)
End If
End Sub
Function WorksheetExists() As Boolean
Dim sh As Object
For Each sh In DestinationBook.Worksheets
If sh.Name = desiredName Then WorksheetExists = True: sh.Activate
Exit For
Next
End Function
私は実行時エラー「424」を取得しています:オブジェクトが
必須提案がありますか?
ありがとうございます!
ありがとうトニー、ポイントは私はそれが正しい宛先シートがアクティブであることを自分で確認したいと思っています。右の宛先シートは、ソース・ファイル内のソース・シートのセルI2の内容と同じ名前のものです。技術的には、これは正しい場所に戻ってくるはずです。なぜなら、これはボタンがある場所だからです。私は、それが間違って変更されていないことを絶対に確信したい - 宛先ファイルに複数のシートがあり、それぞれ別々に実行される。それらはすべて全く同じようにフォーマットされているので、混乱する傾向があります。 –
さて、それに対処するためのコードを追加しました。それが役に立てば幸い。 –
ほとんどそこにありますが、見つけられない、ちょうど開いたソースブックのシートを探しているようです。明確にするために、セルI2は、ソースブックおよび「パフォーマンス」と呼ばれるソースシートに配置され、宛先ファイル内の宛先シートは、ソースシート内のI2の内容と同じと呼ばれる。ソースシートにI2のSTACKと言って、目的のワークブックにSTACKと呼ばれるシートを見つけてそこに貼り付けたいとします。 –