2017-06-27 15 views
0

WordマクロでExcelシートのCodeNameを使用します。ただし、Wordでは、プロパティが動作していないようです。WordからExcelシートのCodeNameを参照する方法は?

この作品は、作品:

Dim sht As Object 
Dim xlsobj_2 As Object 
Dim sheetName As String 

Set xlsobj_2 = CreateObject("Excel.Application") 
xlsobj_2.Application.Visible = True 'I can see it opens as I expected. 
Set xlsfile = xlsobj_2.Application.Workbooks.Open(folder & fileName, UpdateLinks:=0) 'You can create your own excel file. 
Set sht = xlsfile.Sheets(sheetName) 
MsgBox sht.Name 'This gives me the name of the sheet and I know it is correct. 

私が欲しいものである。これは動作しません:

Dim sht As Object 
Dim sheetName As String 
Dim sheetName As String 

...'Same as above. 

MsgBox sht.CodeName 

は、あなたのスマートな人々をありがとうございました!

+0

CodeNameNameを持つCodeName

  • Sheet3のワークシート(「シート3」)、それはあなたが 'sht'宣言した方法が原因であるかもしれないので、私のために働くようです。 – YowE3K

    +0

    "does not work"は、問題の有用な説明ではありません。コードのすべての部分(例:Dim文、Excelアプリケーションオブジェクトの設定、ワークブックオブジェクトの設定など)を含めることができます。あなたはそのコードを実行するとどうなりますか? –

    +0

    Word VBAは常に "CodeName"の "C"を小文字のcに変更します。そして、私が走ると、MsgBoxは何も与えません。 – Ray

    答えて

    0

    シートが作成された後、最初にVisual Basic Editorに入ると、ワークシートにはCodeNameが割り当てられます。

    CodeNameが割り当てられるまで、.CodeNameプロパティは空の文字列を返します。


    この影響はしばしば混乱します。たとえば、デフォルトの3空のワークシートで新しいブックを開く場合、あなたはすぐに最初のものの前に別のワークシートを挿入し、その後はVBEに行くそして、あなたは

    • ワークシート(「シート4」を持つことになります)"Sheet4"Nameを有し、CodeName
    • Sheet1のワークシート( "シート1") "Sheet1"Nameを有し、 CodeName
    • Sheet2のワークシート( "シート2")は "Sheet2"Nameを有します "Sheet3"Sheet4
    +0

    フォローアップ:CodeNameがVBEという単語に値を持つようにするには、オブジェクトが開かれているExcelのVBEが必要です。 – Ray

    関連する問題