VB6.0を使っているとエクセルのセルの値が正しく表示されない問題について

このQ&Aのポイント
  • VB6.0を使ってエクセルのセルの値を表示する際に、予期せぬ結果が出てしまう問題があります。
  • 具体的には、C5のセルに50という値が入っているのに、VBのメッセージボックスで表示すると「0」と表示されてしまいます。
  • この問題の原因としては、コード内でのセルの値の取得方法に問題がある可能性があります。
回答を見る
  • ベストアンサー

EXCELのセルの値を表示する

VB6.0を使っています。 エクセルのC5のセルに50という値が入っています。 この値をVBのメッセージボックスで見たいのですが 実行して見てみると 「50」ではなく何故か「0」と表示されてしまいます。 どうしてでしょうか? その部分のコードは下です。 Dim Wb As Excel.Workbook Dim Ws As Excel.Worksheet Dim Ea As Excel.Application Dim atai As Integer Set Wb = GetObject("C:\test\test.xls") Set Ea = Wb.Application Set Ws = Wb.Worksheets("Sheet1") atai = Ws.Cells(3, 5) MsgBox (atai)

質問者が選んだベストアンサー

  • ベストアンサー
noname#29107
noname#29107
回答No.1

C5セルを参照するなら、 atai = Ws.Cells(5, 3) ですが・・・・

beatwired55
質問者

お礼

素早い回答ありがとうございました! atai=Ws.Cells(5,3) に書き直して実行してみたところ 「50」という値が表示されました。 5と3が逆だったんですね。 なんか恥ずかしいです^^;

関連するQ&A

  • Excelのセルの値を取得

    VB2005Expressにて開発しています。 Excelのセルの値を取得するにはどうしたらいいのでしょうか。 下記でExcelは起動出来るのですが、値の取得ができません。 また、Rangeで範囲を指定して一括取得して、1データずつ配列化した 変数にセットすることは可能なのでしょうか。 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlFilePath As String = "C:\excel_test.xls" Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath) Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item(1) xlApp.Visible = True どなたかご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • Excel 2003 GetObjectを連続で使うとエラー

    以下のVBAを実行したいのですが Private Sub test() Dim objWorkbook1 As Excel.Workbook Dim objWorkbook2 As Excel.Workbook Set objWorkbook1 = GetObject("C:\あいうえお\200706.xls") Set objWorkbook2 = GetObject("C:\かきくけこ\200706.xls")←別の場所にある同じファイル End Sub 「アプリケーション定義またはオブジェクト定義のエラーです。」と 表示されます、GetObjectを2回連続で呼ぶことは 出来ないのでしょうか? よろしくお願いします。

  • エクセルを表示できない

    プログラム初心者です。 Private Sub Command3_Click() On Error Resume Next Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet With xlApp.Application Set xlApp = GetObject("F:\vb6.0\book1.xls") Set xlBook = xlApp.Workbooks.Open("Book1") Set xlSheet = xlBook.Worksheets(1) xlApp.Application.Visible = True End Sub と入力したのですが、実行してボタンをクリックしてもエクセルの表が表示されません。なぜでしょうか?

  • Access2000にExcel2000のデータを読み込みたい。

    Access上のVBAでExcelよりデータを読み込もうと思います。 最終行を求めるに xlUp を使用しようと思いましたが、 #実行時エラー '1004' #Rangeクラスの Select メソッドが失敗しました。 となります。 どこをがおかしいでしょうか?   Dim wb As Excel.Workbook   Dim ws As Excel.Worksheet   Set wb = GetObject(C:\abc.xls")  '---オープン確認   Set ws = wb.Worksheets("Sheet1")   ws.Range("A65536").Select   '----実行時エラー   ws.Selection.End(xlUp).Select         また、abc.xlsにマクロが含まれているためにマクロを有効にするかどうかの確認メッセージがでます。これを有効、無効どちらでもいいですが、メッセージ無しに開くにはどうすればいいでしょうか?

  • 既に開いているエクセルを閉じるには?

    既に該当のファイルが開いているのなら閉じたいのですが xlBook.Quitだとエラーになります。 Sub test1() Dim xlApp As Excel.Application Dim xlBook As Workbook Dim FileName As String FileName = "C:\test.xlsm" Set xlApp = GetObject("", "Excel.Application") 'GetObjectで合ってるか不安 Set xlBook = xlApp.Workbooks.Open(FileName) If xlBook.ReadOnly = True Then 'ファイルが開いてるのなら MsgBox "既にファイルが開いているので閉じます。" xlBook.Quit 'エラー 438 End If xlApp.Quit 'これって何のために必要? Set xlBook = Nothing 'ココを通り過ぎるのにすごく時間がかかる。 Set xlApp = Nothing End Sub と言うコードを作りました。 xlBook.Quitがダメならどのコードを使えばいいでしょう? また、 GetObject("", "Excel.Application") と言う開き方でいいのでしょうか? あと、 xlApp.Quit は何のために必要なのでしょう? タスクマネージーのプロセスを見ると、 Set xlApp = GetObject("", "Excel.Application") を通る時に新しいEXCEL.EXEが作成され、 Set xlApp = Nothing を通り過ぎる時に、そのEXCEL.EXEが消えます。 だから xlApp.Quit は不要ですか?

  • エクセル マクロ 値の貼り付け

    以下のエクセルのマクロで値のみを貼り付けたいのですが、.valueを指定しても上手くできません。 どのように修正すればいいか教えてください。 Dim wb As Workbook Application.ScreenUpdating = False Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\ファイルA.xls", UpdateLinks:=0) ThisWorkbook.Sheets("BBB").Range("E4:AR4").Copy wb.Sheets("BBB").Range("E4:AR4") Application.DisplayAlerts = False wb.Close (True) Application.DisplayAlerts = True Application.ScreenUpdating = True

  • エクセルとVB6

    環境は OS XP Visual Basic 6 Excel 2003 です。 エクセルを扱うについては、今回初めてです。 ソースです----------------------------------- Dim ex As Object ' Excel.Application Dim wb As Object ' Excel.Workbook Dim ws As Object ' Excel.Worksheet Set ex = CreateObject("Excel.Application") ex.Visible = True 'エクセルを表示する Set wb = ex.Workbooks.Add '空白の新しいブックを追加 Set ws = wb.Worksheets.Add '新しいシートを追加 ws.Name = "XXX " 'シートの名前を設定 'シートのセルに書き込む '構文:Cells(行, 列).Value = 値 ws.Cells(1, 1).Value = "ID" ws.Cells(1, 2).Value = "PS" III% = 2 For x% = 0 To 135 III% = III% + 1 ws.Cells(1, III%).Value = 問D$(x%, 0) Next x% ----------------------------------- エクセルが起動し、挿入されます。 質問1 シート XXXはsheet3としてに挿入され、それ以外にsheet1 sheet2もできています。 これはなぜですか。 質問2 sheet1 sheet2を生成しないようにできますか。 できないようにするには、どうすればいいですか。 全くエクセルは詳しくありません。 お詳しい方、よろしくお願いします。

  • エクセルVBAで読み取りパスワード回避

    エクセル2010です。 以下のコードで任意のフォルダ内のエクセルBOOKから所定のデータを取得できます。 しかし、指定フォルダ内に読み取りパスワードが設定されたものがあると、開くことができずに止まってしまいます。 読み取りパスワードが同一で、事前に分かっていればコードにPassword:="AAAABBBB" などと書き入れればいいと思うのですが、事前にはわかりませんし、パスワードもそれぞれ異なります。 そこで、開けなかった場合には、そのBOOKを飛ばしてすすみ、別シートに飛ばしたBOOK名を記録しておきたいのです。 (BOOK作成者にあとからパスワードを聞くため) しかし、残念ながらどのように書けばいいのか思いつきません。 ご指導いただければ幸いです。 Sub TEST001()   Dim wb(1) As Workbook   Dim ws(1) As Worksheet   Dim myFdr As String, fn As String   Dim i As Long   With Application.FileDialog(msoFileDialogFolderPicker) 'フォルダ指定     If .Show = True Then        myFdr = .SelectedItems(1)     Else       Exit Sub     End If   End With   Application.ScreenUpdating = False '画面更新を一時停止   Set wb(0) = ThisWorkbook 'このコピー先ブックをwb(0)とする。   Set ws(0) = wb(0).Sheets(1) 'wb(0)の1枚目のシートをws(0)とする。   fn = Dir(myFdr & "\*.xls*") 'フォルダ内のExcelブックを検索   Do Until fn = Empty '全て検索     Application.EnableEvents = False     Set wb(1) = Workbooks.Open(myFdr & "\" & fn, UpdateLinks:=False, ReadOnly:=True) 'そのブックを開きwb(1)とする。     Set ws(1) = wb(1).Worksheets(1)     i = i + 1     ws(0).Cells(i, "A").Value = ws(1).Range("B2") 'ws(0)に転記     ws(0).Cells(i, "B").Value = wb(1).Name     ws(0).Cells(i, "C").Value = ws(1).Name     wb(1).Close (False) '保存せず閉じる     Application.EnableEvents = True     fn = Dir 'フォルダ内の次のExcelブックを検索   Loop '繰り返す   Application.ScreenUpdating = True '画面更新停止を解除   MsgBox i & "個取得" End Sub

  • VBでVBAを起動

    こんにちは、VB初心者です。 VB6.0を使用しています。 VBからエクセルのVBAを起動させたいと思っています。 過去ログを参考にして下のようにして実行してみたのですが、 「実行時エラー'1004':マクロ'Keisan'が見つかりません。」 と、エラーが出てしまいVBAを起動することができません。 (ExcelVBAの関数(?)名はKeisan()です。) どうすればエラーを出さずに VBからVBAを起動させることができるのでしょうか? 何か参照し忘れていたり Callの以前に何かを宣言をしておかなければいけないのでしょうか? ******** Dim Wbook As Excel.Workbook Dim Exap As Excel.Application Set Wbook = GetObject("C:\テスト.xls") Set Exap = Wbook.Application     Call Exap.Run("Keisan")

  • VBAでエクセルをシート名を気にせず読み込むには?

    ACCESS2000のVBAでエクセルを読んでいるプログラムを作成しています。 今までは、その受け取っているエクセルのシート名が固定だったのですが、次回からシート名が可変になります。そこで相談なのですが、シート名が可変でも読み込む方法はありますか。ちなみにシートは1つです。(インポート以外でお願いします。) 現在のコーディング例 一部抜粋 Dim wb As Workbook 'ワークブック Dim ws As Worksheet 'シート 'マスタのExcelファイルを開く Set wb = Workbooks.Open("test") Set ws = wb.Worksheets("SHEET1") <=ここが可変になります。 i = 0 Do Until IsEmpty(ws.Cells(StartRow + i, StoreNoCol)) nohindate = ws.Cells(StartRow + i, 2) '日 i = i + 1 Loop 宜しくお願いします。

専門家に質問してみよう