1

さて、コード化したワークブックから起動したときに正常に動作するマクロを作成しました。ただし、マクロがさまざまなワークブックで動作できるようにする必要があります。

マクロを非表示の「個人用」ワークブックに移動しましたが、コードが「ThisWorkBook」を参照するときは、そうです、個人用ワークブックを指しています。

ワークブック変数を作成し、ワークブックのアドレス/名前を指すことだけを考えていました...しかし、これは異なります(ワークブックはシステムによって生成され、ワー​​クブックの名前は生成された時間/日付に依存します)。

参考までに、Excel のツールバーにボタンを配置したいと思います。ユーザーがクリックすると、このマクロが実行されます。おそらく、マクロを呼び出すワークブックの名前を取得する方法はありますか?

ありがとう、サム。

4

4 に答える 4

3

コードが呼び出されたワークブックとワークシートを参照できるアクティブなコマンドがあります。

ActiveCell
ActiveChart
ActiveEncryptionSession
ActivePrinter
ActiveProtectedViewWindow
ActiveSheet
ActiveWindow
ActiveWorkbook

Applicationオブジェクトのすべてのプロパティ

于 2012-12-17T16:55:59.617 に答える
1

ワークブックA(データワークブック)に命名規則がある場合は、次の変更を行ってワークブックAを識別できます。

Dim wbA As Workbook 'workbook A ( the data workbook) 
Dim wb As Workbook 

For Each wb In Workbooks 'loop through all opened workbooks, matching the name 
    If InStr(wb.Name, "ABC") > 0 Then 
        Set wbA = wb
        Exit For
    End If
Next wb

次に、「ThisWorkBook」をwbAに置き換えます

于 2012-12-17T07:53:51.360 に答える
0

マクロの代わりに VBS を使用することもできます。言語はほとんど同じで、スクリプトはワークブックから独立しています。

マクロの実行に使用するファイルを特定する限り (データとコードの例がないため、具体的に特定するのは困難です)、必要なファイルを参照できます。

Dim objShell
Set objShell = CreateObject("Shell.Application")

Dim strFileName
Dim strFilePath

Dim dPicker
Set dPicker = objShell.BrowseForFolder(0, "Choose a file:", &H4000)

strFilePath = dPicker.self.Path 'will give you the file path of the file you choose,
                                'which you can then use to open/access the file with
                                'the data you need.

'Code

Set dPicker = Nothing

マクロに固執したい場合は、VBA でファイル ピッカーを使用するための FileDialog オブジェクトを確認できます。

VBA で開いているワークブックのファイル名やパスを取得するには、次を使用します。

 ActiveWorkbook.Name
 ActiveWorkbook.Path

お役に立てれば!

于 2012-12-18T01:37:57.993 に答える