質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1039閲覧

VB.netにおけるExcel操作

yuta_nakazono

総合スコア2

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/09/05 00:32

前提

Visual Studio 2008
VB.NETにてプログラムを書き、顧客先のEXCELファイルを操作する必要が出てきました。
顧客先のExcelバージョンが異なることから、OCM等の参照(プラグイン)機能は使用が出来ません。

excelApp = CreateObject("Excel.Application") 
を用いてEXCEL操作を行います。

実現したいこと

・EXCELファイル内にあるコンボボックスのリストを操作する
例)▽犬,猫,ペンギン  ⇒  ▽トラ,ライオン,チーター

発生している問題・エラーメッセージ

OCM参照を用いた際は以下の文法で実現が可能です。

Dim excelApp As Object = Nothing Dim excelBooks As Object = Nothing Dim excelBook As Object = Nothing Dim excelSheets As Object = Nothing Dim xlsValidation As Object = Nothing Dim ExcelRange As Object = Nothing excelApp = CreateObject("Excel.Application") excelBooks = excelApp.Workbooks excelBook = excelBooks.Open("C:\###\###\###\####.xlsx") excelSheets = excelBook.Sheets("Sheet1") Dim excelR = excelSheets.Cells(1, 1) xlsValidation = excelR.Validation xlsValidation.Delete() xlsValidation.Add(excelApp.XlDVType.xlValidateList, Formula1:="トラ,ライオン,チーター") excelBook.Save() excelApp.Quit()

ただ、excelApp = CreateObject("Excel.Application") でEXCELを使用した場合は、
以下のコードでエラーが発生します。

xlsValidation.Add(excelApp.XlDVType.xlValidateList, Formula1:="トラ,ライオン,チーター")

エラー内容としては、XlDVType.xlValidateList が存在しない、といったものになります。

試したこと

XlDVType.xlValidateList のようなVBA関数を検索で探してみましたが発見することが
出来ませんでした。

手詰まりな状況でして、この場合の解決方法、
コンボボックスの編集方法についてご存じの方がいましたらご教示いただけますと幸いです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

XlDVType 列挙 (Excel)

ではないですか?
値を直接指定してはどうでしょう。

投稿2022/09/05 05:37

YAmaGNZ

総合スコア10258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuta_nakazono

2022/09/05 06:08

YAmaGNZさま ご回答いただきありがとうございます。 値を直接指定、とはどのような形になりますでしょうか。 例コードがありますと非常に有難いのですがご検討いただけないでしょうか。
YAmaGNZ

2022/09/05 06:50

名前で指定したものが値に変換されます。 なのでexcelApp.XlDVType.xlValidateListと名前で指定するのではなく値を指定してみてください。
yuta_nakazono

2022/09/06 05:50

YAmaGNZさま ご返信が遅れてしまい申し訳ありません。 ご指摘いただいた内容で解決いたしました。 ご教示いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問