2017-09-29 7 views
0

ウェブから毎日ダウンロードされるブックにマクロを実行しようとしていますが、ダウンロードした日付に応じて名前が変更されるworhsheetが1つしかありません(例: "vendas 201709294524455"このワークシートを変数として設定する必要がありますが、このdinamyc名の変更でどうすればいいですか?名前以外のワークシートを選択してください。

は、私が試した:

Dim Sh1   As Worksheet 
Dim Sh2   As Worksheet 
Dim FindCell  As Range 

Set Sh2 = ThisWorkbook.Worksheets("book1") 
Set Sh1 = Workbooks("vendas.xlsm").Worksheets("*vendas*") 

LastRow = Sh2.Range("d65536").End(xlUp).Row 

...残りのコード

しかし、仕事をdoesn'tされる...任意のアイデア?それだけで1つのワークシートを持っていたよう

+0

* name *ではなく* index *でシートを取得します。スコットの答えを見てください。 –

答えて

5

だけ使用します。

Set Sh1 = Workbooks("vendas.xlsm").Worksheets(1) 

Worksheets()は、インデックスまたは文字列名が可能になります。 1枚のシートでは、インデックスは常にその1シートの1である。参照:https://msdn.microsoft.com/en-us/vba/excel-vba/articles/worksheet-object-excel

これは、Sh1を名前にかかわらずブックの最初のワークシートに設定します。

+1

別の成功Scott!シンプルで簡単で完璧です! – Roca

1

Scott Cranerのソリューションはあなたにとって最適です。ワークシートの索引(ワークシートの順序を変更した場合に変更されます)の使用を避けたい場合は、これを行う方法です。複数のワークシートがある場合にのみ、このメソッドを使用する価値があります。

Sub SetWorksheet() 
    Dim ws As Worksheet, targetWorksheet As Worksheet 

    For Each ws In ThisWorkbook.Worksheets 
     If ws.Name Like "*test*" Then 
      Set targetWorksheet = ws 
      Exit For 
     End If 
    Next ws 

    'use targetWorksheet 
    MsgBox targetWorksheet.Name 
End Sub 

「テスト」(この例では)のような複数のシートがある場合は、最初のものが表示されます。

関連する問題