2017-11-29 12 views
0

ディレクトリから自分が選択したExcelファイルを参照して選択し、そのExcelファイルでSheet1をアクティブにできるようにするVBAコードを記述する必要があります。その後、マクロを起動したシート上で実行します。開いているファイルを有効にする方法をここからExcelファイルを開き、シート1をアクティブにしてマクロを実行する

Sub GetFile() 
Dim fNameAndPath As Variant, wb As Workbook 
Dim sht As Worksheet 

fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLSX), *.XLSX", Title:="Select File To Be Opened") 
If fNameAndPath = False Then Exit Sub 
Set wb = Workbooks.Open(fNameAndPath) 

、そしてどのようにマクロを実行するために、開いているファイルのシート1をアクティブにするには:

前方の下から助けてください?

+0

あなたは、ランダムに選択されたファイルが必要?ええ、なぜ? – ashleedawg

+1

sheet1の意味は? sheet1はタブの名前ですか、それともExcelファイル内のすべてのタブのうちの1番目のタブですか? – Ibo

答えて

1

マクロを実行するために、Activate「Sheet1」は必要ありません。

あなたはActivateそれは、使用しなければならない場合:

Set wb = Workbooks.Open(fNameAndPath) 

' Option 1: set the first sheet (index) 
Set Sht = wb.Worksheets(1) 
' Option 2: set the sheet named "Sheet1" 
Set Sht = wb.Worksheets("Sheet1")  

Sht.Activate ' <-- Not sure why you would need to Activate it ? 
+0

'Set Sht = wb.Worksheets(1)'は、シートの名前がExcel自体によって割り当てられたデフォルト名でない場合、間違った割り当てになります。 – Ibo

+0

@Ibo自分のコード内のコメントを読んだことがありますか? POが "Sheet1"、または最初のシート(index wize)を意味するかどうかわからないので、私は彼に2つのオプションを与えました –

+0

私たちは両方とも彼が求めているものから彼のレベルを見ることができ、私はあなたの答えが間違っていると言っているわけではありません、それは彼のためにちょうど混乱することができます – Ibo

0

コードは、ワークブックを開き、WB対象に開かれたワークブックを割り当てます。自動的にwbがアクティブになるので、そのためのコードを書く必要はありません。ただ、シート1がアクティブになり、あなたが追加する必要がありますを確認します:「私はマクロが有効にシート上で実行したい」

wb.sheets("Sheet1").activate 

私は非常にあなたが何を意味するかによって取得できませんでした実行されるマクロに依存するからです。などマクロが変更を加えるためにアクティブなシートを使用することを確認してくださいあなたはこれを行うことができ、たとえばオブジェクトactivesheetを使用する必要がありますようにするには:

Dim ws as worksheet 
set ws=activesheet 
' ... 
' do whatever you want on ws in here 
' ... 
+0

これは "ランダムに動作する場合は(すなわち、ユーザが選択した)ファイルの場合、「シート1」というシートが存在しない可能性が非常に高い。したがって、OPはファイル内の最初のシートにアクセスしたいので、おそらく 'Worksheets(" Sheet1 ")ではなく' Worksheets(1) 'にアクセスする方法を示すのが最善でしょう。 (または両方の方法にアクセスする方法を示して、どちらの方法でも適切な方法を使用できるようにしてください) – YowE3K

+0

彼はsheet1といい、OPの最初のシートではありません。反対に、もし彼が本当にSheet1(シートの名前)を望んでいて、コードが最初のインデックスを選ぶなら、それは問題になります。 – Ibo

+0

質問は 'Sheet1'(' CodeName'となるでしょう)と(2回)シート '1'(これは' Sheets'コレクションのインデックスとなりますが、 '' Sheet1''( 'Name'となります)は言及されていません)、3つのメソッドをすべて与えて、最高の解決策になります。 (あるいは、質問者が意味するものが明確になるまで待つかもしれませんか?) – YowE3K

関連する問題