2016-11-15 23 views
2

私はこの記事を編集して、これに関するいくつかの調査を行ったことを示しています。以下のコードの一部は、 "マクロの記録"セッション中にキャプチャされました。私は変数に記録するブック名をどのように変更するのか分かりません。どんな助けでも大歓迎です!VBAテンプレートワークシートと変数ワークシートの間のコピーと貼り付け

2つのワークシートの間にデータをコピー&ペーストしようとしています。 1つはテンプレートであり、常に同じ名前を持ち、もう1つは開いているものによって異なります。私が今使っているコードは、エラーを投げつけ続けています。私の現在のコードは以下の通りです!どんな助けでも大歓迎です!私は手動でランダムなブックを開き、その名前を変数に格納したいと思います。次に、マクロでテンプレートファイルを開き、templateFileに新しいタブ(needInfo)を作成し、手動で開いたファイルに戻して範囲( "A1:B4")を選択してからtemplateFileの新しいシートにコピーします。より良い方法があれば教えてください!私はこれに新しいスーパーです!

Sub Macro3() 

Dim templateFile As Workbook ' template macro workbook; will always have same filename 
Dim workingFile As String ' current working CSCC Quote download 
Dim workingSheet As Worksheet ' only sheet in CSCC Quote 
Dim tempSheet As Worksheet ' created sheet in CSCC Quote to hold temp data 
Dim fileName As String 
Dim wrkBook As Workbook 
Dim nRow As Long 
Dim neededInfo As Long 
Dim neededRange As Range 

Application.ScreenUpdating = False 

' Set template file name 
Set templateFile = "20161115 SMARTnet Template.xlsx" 

Set templateFile = ActiveWorkbook 
templateFile.Active 
Set tempSheet = Worksheets.Add(after:=ActiveSheet) 
tempSheet.Name = "neededInfo" 
workingFile = ActiveSheet.Name 
Range("A1:B4").Select 
Selection.Copy 
templateSheet.Activate 
Range("A5").Select 
ActiveSheet.Paste 
workingFile.Activate 

End Sub 

マイソリューション:

Sub Macro3() 

Dim tPlate As Workbook ' template macro 
Dim wrkngFile As Workbook ' current working CSCC Quote download 
Dim wrkngSheet As Worksheet ' only sheet in CSCC Quote 
Dim tSheet As Worksheet ' created sheet in template file to hold temp data 
Dim fileName As String 
Dim tPath As String, tFile As String ' template path location and template file 
Dim nRow As Long 
Dim neededInfo As Long 
Dim neededRange As Range 

Application.ScreenUpdating = False 

tPath = "C:\Users\tcoplien\Desktop\SMARTnet\" 
tFile = tPath & "20161115 SMARTnet Template.xlsx" 

Set wrkngFile = ActiveWorkbook 
Range("A1:B4").Select 
Selection.Copy 

' Open template file and save name as variable 
Set tPlate = Workbooks.Open(tFile) 

Set tSheet = Worksheets.Add(After:=ActiveSheet) 
tSheet.Name = "neededInfo" 

tSheet.Range("A5").PasteSpecial xlPasteValues 

wrkngFile.Activate 
Range("A1").Select 

End Sub 
+0

*エラーをスローアップします。*エラーは何行ですか? –

+0

*私は手動でランダムブックを開き、名前を変数に格納したいと考えています。次に、マクロでテンプレートファイルを開き、templateFileに新しいタブ(needInfo)を作成し、手動で開いたファイルに戻して範囲( "A1:B4")を選択してからtemplateFileの新しいシートにコピーします。 *これは約5つまたは6つの異なる問題のように思えるかもしれませんが、おそらくそれを分解し、個々のステップを解決して、圧倒的には見えないようにしてください。 –

+0

ごめんなさい!私はエラーがどこにあったのか知っていいと思う。私は今修正しましたが、ありがとう!と私は、エラーが起こっていたと思うSet templateFile = ActiveWorkbook。私はそれを確認するチャンスがあるときにそれを更新します。 –

答えて

2

あなたのコードはかなり近いですが、いくつかの問題があります。まず、その型を名前として変数を作成しないでください。 Dim workBook As WorkbookDim bk As Workbookのように変更します。

次は、文Set templateFile = "20161115 SMARTnet Template.xlsx"です。これは、効果的にブックに文字列を設定しようとしています。代わりにこれをSet templateFile = Workbooks("20161115 SMARTnet Template")に変更してください。または、これを次のように変更してください。

Dim tempStr as String 
tempStr = "20161115 SMARTnet Template" 
Set templatefile = Workbooks(tempStr) 

次のコード行で何を達成しようとしているのかよく分かりません。 templatefileブックに新しいタブを追加しているようです。ブックをアクティブ化する代わりに、このSet tempSheet = templatefile.Worksheets.Add(after:=ActiveSheet)を使用して、この新しいシートの名前を "neededInfo"に変更してください。

次に、workingFile変数をアクティブシート(この場合はneededInfoシートになります)に設定します。私はこれがあなたの意図ではないと仮定しています。新しいワークシートを追加する前に、変数workingSheetを定義する必要があります。

新しいコードは次のようになります:私は、これはあなたが達成しようとしていた何だと思います

Sub Macro3() 

    Dim templatefile As Workbook 
    Dim workingSheet As Worksheet ' only sheet in CSCC Quote 
    Dim tempSheet As Worksheet ' created sheet in CSCC Quote to hold temp data 
    Dim tempStr As String 

    Application.ScreenUpdating = False 

    ' Set template file name 
    tempStr = "20161115 SMARTnet Template" 
    Set templatefile = Workbooks(tempStr) 
    Set workingSheet = ActiveSheet 
    Set tempSheet = Worksheets.Add(after:=ActiveSheet) 

    tempSheet.Name = "neededInfo" 

    workingSheet.Range("A1:B4").Copy 

    tempSheet.Range("A5").PasteSpecial xlPasteValues 

    Application.ScreenUpdating = True 

End Sub 

を。もしそうでなければ、これはあなたにとって良いスタートになるはずです。

幸運を祈る!

+0

ありがとうございました!私はもう一度見てチャンスをつかんだ。私は上記のソリューションを投稿します!あなたもまた働いたので、ありがとう! –

関連する問題