2017-09-17 5 views
0

こんにちは男...このコードは、ここに私はエラーを取得しています「範囲のうちスクリプト」エクセルVBAが動作していない(動的にアクティブなブックの名前を取得)私は</p> <p>ので、私は、ダイナミックなアクティブなブックの名前を必要な場所別のワークブックから切り替える必要があり、私はVBAプロジェクトを作成してい

Dim wb 
wb = ActiveWorkbook.FullName 
wb = Split(wb, "\")(UBound(Split(wb, "\"))) 
Workbooks("wb").Activate 

を使用しようとしていますが、私は、静的が...このコードが動作するアクティブなブックの動的な名前を変更していたときに

Dim wb 
Workbooks("project1.xlsm").Activate 

私はアクティブなブックの動的な名前を必要とする原因既存のコードであなたのエラーがあなたの代わりに変数wb"wb"Stringリテラルを使用しようとによって引き起こされる... ..

+0

「Dim wb As Workbook」を「Set wb = ActiveWorkbook」にしてから、それを 'Activate 'することなくブックを参照するのに' wb'を使うのはなぜですか? – YowE3K

+0

(ただし、名前がある場合は** wb = ActiveWorkbook.Name'を使用し、次に「ワークブック(wb)」を使用してブックを参照してください) – YowE3K

+0

@ YowE3KはDim wbで自分のコードを更新しました。ワークブック、エラーが "オブジェクト変数またはWithブロック変数が設定されていません" –

答えて

1

をみんなを助けてください。だから、次は動作するはずです:

Dim wb As String 
wb = ActiveWorkbook.FullName 
wb = Split(wb, "\")(UBound(Split(wb, "\"))) 
Workbooks(wb).Activate 

をしかし、FullNameを使用して、パスコンポーネントを剥ぎ取ることNameプロパティを使用することに違いはありません:

Dim wb As String 
wb = ActiveWorkbook.Name 
Workbooks(wb).Activate 

しかし、それだけで作成する方が良いだろうWorkbookオブジェクトとそれを直接使用:

Dim wb As Workbook 
Set wb = ActiveWorkbook 
wb.Activate 

注:ActivateおよびSelectの使用が必要な場合はほとんどありません。あなたの次のコードを見ることなく、良いコードのお手伝いをするのは難しいですが、多分それはのようなものです:

Dim wb As Workbook 
Set wb = ActiveWorkbook 
wb.Worksheets("Sheet1").Range("A1").Value = wb.Worksheets("Sheet1").Range("A2").Value 

this questionに答えをチェックアウトするアイデアかもしれません。

+0

ありがとう...そしてここに私のコードです[リンク](https:// jpst .it/14Xgc) –

関連する問題