お世話になります。
WindowsXP + SP3、VB.net(2005)の環境にて開発をしております。

VB.netから既存のエクセルファイル(雛形)を開き、特定の名称のシートを
アクティブにしたいのですがどのようにコーディングすれば良いでしょうか?
※色々とネットで情報検索してみましたが特定の名前のシートを操作する
 方法をうまく見つけられず質問致しました。

エクセルファイル名:売上情報_2009年.xls
シート名     :"200901" ~ "200912" の12シート


以前、VB6で同様のことを行ったときは以下のような記述で実現できました。

Dim xlApp As Object
Dim xlsheet As Object

xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open(FileName:="C:\売上情報_2009年.xls")
xlsheet = xlApp.Sheets("200908")
xlsheet.Activate()

現状、vb.netで以下のコーディングまではできております。

Dim xlApp As New Excel.Application
Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
Dim xlBook As Excel.Workbook = xlBooks.Open("C:\売上情報_200904.xls")
Dim xlSheets As Excel.Sheets = xlBook.Worksheets

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

このQ&Aに関連する最新のQ&A

A 回答 (1件)

Dim xlApp As New Excel.Application


Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
Dim xlBook As Excel.Workbook = xlBooks.Open("C:\売上情報_200904.xls")
Dim xlSheets As Excel.Worksheet = xlBook.Worksheets("200908")

xlApp.Visible = True
xlSheets.Activate()

と言う感じ?
    • good
    • 0
この回答へのお礼

お世話になっております。

Option Strict On になっておりましたので型変換(CType)を追加して、
以下のロジックにてシート名指定でシートをアクティブにすることができました。
ありがとうございました。

Dim xlApp As New Excel.Application
Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
Dim xlBook As Excel.Workbook = xlBooks.Open("C:\売上情報_200904.xls")
Dim xlSheet As Excel.Worksheet = CType(xlBook.Worksheets("200908"), Excel.Worksheet)

xlApp.Visible = True
xlSheet.Activate()
 

お礼日時:2009/08/12 17:00

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q1フォルダに「A.xls」、「B.xls」、「C.xls」・・・とある

1フォルダに「A.xls」、「B.xls」、「C.xls」・・・とある場合、
すべてのファイルに一斉にA1セルに「a」という文字を反映させる場合の
VBAプログラムを教えていただけますでしょうか?
よろしくお願いいたします。

Aベストアンサー

フォルダ名を変更してから試してね
4行目の
mPath = "C:\tmp\"
「aaa」なら
mPath = "C:\aaa\"
に変更


Sub test()
Dim mPath As String
Dim nf As String
mPath = "C:\tmp\"
nf = Dir(mPath & ".xls")
Do While nf <> ""
Workbooks.Open Filename:=mPath & nf
Workbooks(nf).ActiveSheet.Range("a1").Value = "a"
Workbooks(nf).Close SaveChanges:=False
nf = Dir()
Loop
End Sub

簡単なコードにしてあるので、分らない所はヘルプで調べてね
参考まで

QDim x As Integer = 0

いつもお世話になっております。

只今、本に記載してあるソースコードを手入力しています。
標記のように入力したら、『コンパイルエラー 修正候補:ステートメントの最後』というエラーが出ました。

(1)このエラーは無視してもよいのでしょうか?
(2)そもそも、変数の宣言文の後ろに=0をつけている意味がわかりません。当方VB初心者です。

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

Aベストアンサー

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsugi.ed.jp/vba4graduate/vba_hensuusyokika.htm
ーーー
定数のConstであればこういう書き方はOK
Sub test01()
Const x As Integer = 0
MsgBox x
End Sub
ーーー
VB.NETでは、OK
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim x As Integer = 10
MsgBox(x)
End Sub
ーー
Javaでは可能であるようです
http://msugai.fc2web.com/java/var2.html
ーーーーー
>ろに=0をつけている意味がわかりません
宣言と同時に値を与える=初期化する

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsug...続きを読む

Qカスタムコントロール作ってます(VB.NET)。VB.Net にVB.6のActiveX作成時にあったプロパティページ作成ができないようですが

タイトルどうりです。VBNETのカスタムコントロールでデザインモードにおけるフォームつまりプロパティページやビジュアルにプロパティボックスから設定できるようにしたいのですが、どうしたらできるでしょうか?VB6ではできたのですが、(Activexコントロール)。

よろしくお願いします。

Aベストアンサー

通常のプロパティと同じように、プロパティ ウィンドウに項目を表示して設定できるようにする必要があります。
具体的には、
1. カスタム コントロールのクラスに外部公開する Property プロシージャを作成して、内部で値を保存できるようにする。
2. そのプロパティの宣言部分で、プロパティ ウィンドウに表示するように指示する属性値を設定する。

こんな感じです。

参考URL:http://www.atmarkit.co.jp/fdotnet/winexp/winexp02/winexp02_01.html

QVB.Net Object型 空かどうか

お世話になります。

環境  Windows 7 : Visual Strudio 2012

Function ABC(ByVal wCtrl As Object) As Boolean
  If String.IsNullOrEmpty(wCtrl) = True Then
    ABC= True
  Else
    ABC= False
  End If
End Function

今まで上記のようなやり方で、引数が空かどうかを検証していたのですが、これを実行すると

型 'System.InvalidCastException' の初回例外が Microsoft.VisualBasic.dll で発生しました
というエラーが大量に発生します。

If String.IsNullOrEmpty(wCtrl) = True Then の部分でこれが発生しているようで
動作には問題ないようなのですが、どうにかできないものかと思っております。
初回例外を発生させないで同じ機能にするにはどうしたらよいでしょうか?

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

お世話になります。

環境  Windows 7 : Visual Strudio 2012

Function ABC(ByVal wCtrl As Object) As Boolean
  If String.IsNullOrEmpty(wCtrl) = True Then
    ABC= True
  Else
    ABC= False
  End If
End Function

今まで上記のようなやり方で、引数が空かどうかを検証していたのですが、これを実行すると

型 'System.InvalidCastException' の初回例外が Microsoft.VisualBasic.dll で発生しました
というエラーが大量に発生します。

If String.IsNullOrEmpty(wCtrl) = True The...続きを読む

Aベストアンサー

As Objectである必要はあるのですか。
言語機能としてメソッドのオーバーロードがあるのですから,本質的には各型ごとにオーバーロードを用意するのがよいと思います。
そもそも,「空白」というのは文字列,つまりはStringでの話であって,一般の型に使える話ではありませんが。

' String型は特殊でString.IsNullOrWhiteSpaceを利用
Function Abc (ByVal s As String) As Boolean
    Return String.IsNullOrWhiteSpace(s)
End Function

' Bit型は受け付けない
Function Abc (ByVal bAs Bit) As Boolean
    Throw New InvalidOperationException()
End Function

' String/Bit型は専用のメソッドで処理,それ以外はNothingかどうかを返す
Function Abc (ByVal o As Object) As Object
    If o Is String Then
        Return Abc(DirectCast(o, String))
    End If
    If o Is Bit Then
        Return Abc(DirectCast(o, Bit)
    End If
    Return o Is Nothing
End Function

As Objectである必要はあるのですか。
言語機能としてメソッドのオーバーロードがあるのですから,本質的には各型ごとにオーバーロードを用意するのがよいと思います。
そもそも,「空白」というのは文字列,つまりはStringでの話であって,一般の型に使える話ではありませんが。

' String型は特殊でString.IsNullOrWhiteSpaceを利用
Function Abc (ByVal s As String) As Boolean
    Return String.IsNullOrWhiteSpace(s)
End Function

' Bit型は受け付けない
Function Abc (ByVal bAs Bit) As Boolean
    Th...続きを読む

QApplication.ScreenUpdating = Falseで結果変わることありますか?

Application.ScreenUpdating = Falseすると超高速化されるので
これにしたいのですが、ただ画面が更新されないだけど結果には
影響することはありませんよね?

Aベストアンサー

ありません
画面の制御を行っているだけで
計算等の要素をもっていないので
処理の結果が変わることはありません


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報