• ベストアンサー

Excelシートの読み込み

Excelシートからデータを取得してくるとき、 Excel上では値が入っているにもかかわらず Vb側ではNullになってしまいます。 Dim ExcelRec As DAO.Recordset … … 変数 = ExcelRec(0).Value ← この時点でNull … ご教授ください。 環境 Vb6.0、Excel2000

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

  • ベストアンサー
  • leftovers
  • ベストアンサー率100% (2/2)
回答No.4

#3です。 http://support.microsoft.com/kb/194124 これではないかしらん?

その他の回答 (3)

  • leftovers
  • ベストアンサー率100% (2/2)
回答No.3

横からすいません。 自分もまったく同じ状況です。 http://www.bcap.co.jp/hanafusa/VBHLP/dao_002.htm というサイト様のTipsをコピペして実験してみた所、半角数字が入ってくるとOKかな?とは思いました。 Fields(0)でコケるんですよねぇ バグなんでしょうか? ・・・すいません。回答になってなくて

回答No.2

#1です。補足で頂いたプログラムでテストしましたが、問題なく動きました(^^; データがない場合は、Nullと出ましたが、データのある部分は正常に動いたので、プログラムはよさそうですが・・・。 MsgBox ExcelTableDef.Name などで、どのシートのデータをとろうとしているのか確認して、本当にデータがあるのかどうか見るくらいしか思いつきません。 お役に立てず、すみません。

Lazio_ss
質問者

お礼

わざわざありがとうございました。 今、読み込んでいるExcelは正常に読み込みできるデータとできないデータがあるんですよ。 Excelのほうで文字列にしたりだとかいろいろ試してみたんですがだめでした。 ほかの対策を考えます。 お忙しいところ、ありがとうございました。

回答No.1

>… >変数 = ExcelRec(0).Value ← この時点でNull の上の…の部分がないと、明確なアドバイスはできないのですが、 select文でデータを取っていますよね? 変数 = ExcelRec.Fields(0) にしてみてはどうでしょうか?

Lazio_ss
質問者

補足

説明不足ですみません。 補足しますと、 Dim ExcelDB As DAO.Database Dim ExcelTableDef As DAO.TableDef Dim ExcelRec As DAO.Recordset Set ExcelDB = OpenDatabase(Excelのファイル名,False, False, "Excel 8.0;HDR=NO;") For Each ExcelTableDef In ExcelDB.TableDefs Set ExcelRec = ExcelDB.OpenRecordset(ExcelTableDef.name, dbOpenTable) Do Until ExcelRec.EOF 変数 = ExcelRec.Fields(0) 変数 = ExcelRec.Fields(1) … ExcelRec.MoveNext Loop ExcelRec.Close Set ExcelRec = Nothing Next ExcelTableDef … … ご指摘の通り、Fields(0)でやってみましたがだめでした。 Select文は使っておりません。 よろしくお願いします。

関連する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 どなたかご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • AccessからExcelファイルのシート名

    よろしくお願いします WinXP pro Access2000を使用しています 現在 Dim DB As DAO.Database Dim Tbl As DAO.TableDef Dim nCount As Long Dim ArrSheets As String nCount = 0 ArrSheets = Array() Set DB = OpenDatabase("ファイルパス", True, True, "Excel 8.0;") For Each Tbl In DB.TableDefs If Right$(Tbl.Name, 1) = "$" Or Right$(Tbl.Name, 2) = "$'" Then ReDim Preserve ArrSheets(nCount) ArrSheets(nCount) = Mid(Tbl.Name, 1, InStr(1, Tbl.Name, "$", 1) - 1) nCount = nCount + 1 End If Next Tbl DB.Close Set DB = Nothing という風にしてExcelファイルのシート名を取得しているのですが これだと、保護されているExcelファイルのシート名は取得できません 保護されているExcelファイルのシート名を取得する場合 どのようにしたらいいのでしょうか? よろしくお願いします

  • DAOでフィールドの値を変更する

    MDBファイルにDAOでアクセスし、フィールド(今回の場合Fields(4))の値をTextBox内の値に変更する方法がわかりません。 Dim WS As DAO.Workspace Dim DB As DAO.Database Dim RS As DAO.Recordset 'レコードを特定する処理 RS.Fields(4).Value = TextBox.Text RS.Update どのように直せばいいのでしょうか??

  • TextBoxに入力した文字をExcelに書き込むには?

    VB2008を使用しています。 VBフォーム内のTextBox1に入力した内容(例 りんご)をBottanを押すことによりExcelの指定したセル(例 A1)に書き込んで保存する方法はありますでしょうか? 現在、以下のところまでは出来ています。 ' excelを定義 Dim excel As New Microsoft.Office.Interop.Excel.Application ' excel testをファイルから開く Dim book As Microsoft.Office.Interop.Excel.Workbook book = excel.Workbooks.Open("C:\test.xls") ' 1枚目のワークシートを取得 Dim sheet As Microsoft.Office.Interop.Excel.Worksheet sheet = CType(book.Worksheets.Item(1), Microsoft.Office.Interop.Excel.Worksheet) Excelの開放からsheetの取得までは出来たのですが、ここから先がわかりません。よろしくお願いいたします。

  • Excelシートのコピー

    VB2008,Excel2007です。 VBからExcelのシートコピーを行いたいのですが、エラーが出てしまい対応策が分からず困っています。 どうすればいいのかご教授ください。 今、書いている処理は下記になります。 エラーが発生するのは最終行です。 エラー内容は「"HRESULT からの例外: 0x800A03EC"」 Dim CopyExcel ,PasteExcel As New Excel.Application Dim CopyBooks ,PasteBooks As Excel.Workbooks Dim CopyBook ,PasteBook As Excel.Workbook Dim CopySheets,PasteSheets As Excel.Sheets Dim CopySheet ,PasteSheet As Excel.Worksheet 'ExcelBookオープン CopyBooks = CopyExcel.Workbooks CopyBook = CopyBooks.Open("C:\Copy.xls") CopySheets = CopyBook.Worksheets PasteBooks = PasteExcel.Workbooks PasteBook = PasteBooks.Open("D:\Paste.xls") PasteSheets = PasteBook.Worksheets 'シートコピー CopySheet = DirectCast(CopySheets.Item(1), Excel.Worksheet) PasteSheet = DirectCast(PasteSheets.Item(1), Excel.Worksheet) CopySheet.Copy(PasteSheet)

  • VB.net2003のエクセルからデータを取得したいのですが・・・

    お世話になります。 VB.NET2003でExcel XPのセルの数値を取得しTextBoxなどで表示させたいのですが、うまいこといきません。 下に考えてみたコードを書いてみます。 とりあえずExcelのA1セルの値を取得してみたいのですが、後ほどループで他のセルの値も取得したいと思っています。 これを回すと、num(1, 1) = sheet.cells(1, 1)(下から3行目)で”追加情報 : 型 'Range' から型 'String' へのキャストが有効ではありません。”とされます。 どなたかご教授お願いしますm(__)m Private Sub exel_open() '------配列設定----- Dim app As Object 'エクセルアプリケーションの定義 Dim book As Object 'ブックの定義 Dim sheet As Object 'シートの定義 Dim col, row As Integer 'colは行、rowは列 Dim num(1, 1) As String '各セルの値を取得 '------エクセルファイルを開く&表示------- app = CreateObject("Excel.Application") app.application.visible = True book = app.Workbooks.Open("D:\test.xls") 'エクセルファイルのopen sheet = book.Worksheets(1) '-----エクセルデータの読み込み------ num(1, 1) = sheet.cells(1, 1) TextBox1.Text = num(1, 1) End Sub

  • エクセルコントロールのVB2008での参照方法

    VB2008でエクセルから値を取得するプログラムを作成しています セルの値を取得することはできたのですが、シートに貼り付けられた チェックボックスやラジオボックスの値の取得方法が分からずに 困っています。 セルの値を取得するまでのフローは以下の様に作成しました ------------------------------------------ Dim exapp As New Object Dim exbook As New Object exapp = CreateObject("Excel.Application") exbook = exapp.workbooks.open(FileName) Dim exsheet As Excel.Worksheet exsheet = CType(exbook.Worksheets.Item(1), Excel.Worksheet) textbox1.text=exsheet.range("A1").value ・ ・ exsheet.nothing exbook.close(False) exapp.quit ------------------------------------- 上記のセルの値を取得している流れの中でチェックボックスや ラジオボックスの値を参照したいのですが どのようにすればよいでしょうか お手数ですがアドバイスなど頂ければ幸いです

  • VBからExcelを使用したいのですが…

    ExcelをVBから使用したいのですが、Withの使い方で困ってます。 Sub PrintInExcel(ByVal PrintDate As Date, ByRef rsBanking As ADODB.Recordset) Dim objExcel As New Excel.Application With objExcel    .Workbooks.Add    With .Workbooks(1)    .Worksheets("Sheet1").Cells(5, 3) = "Hello" ←これは良くて    With .Worksheets("Sheet1")     .Cells(0, 0) = "Daily Worksheet for" & PrintDate ←エラーになる セルに値を入れる時は、ワークシートから書かなければいけないのでしょうか?それとも書き方が間違っているのでしょうか?よろしくお願いします。

  • VB.NETでのEecelデータの読み込みについて

    VB.netを使用しています。 過去ログを参考にして、Excel値の読み込みのプログラム作成をしています。 下記のコードでerrorはでないのですが、正常な値を読み込んでくれません。どなたかアドバイスお願いします。 ※sampleファイルのsheet1のセルA1の値をLabel1に読み込みたい このコードを実行するとLabel1に "System.__ComObject" と表示されてしまう。 セルA1には"100"という数値が入っています。 Dim excelFilePath As String = "C:\sample.xls" Dim Excel As Excel.Application Dim ExcelBook As Excel.Workbook Dim ExcelSheet As Excel.Worksheet Excel = CType(CreateObject("Excel.application"), Excel.Application) ExcelBook = CType(Excel.Workbooks.Open(excelFilePath), Excel.Workbook) ExcelSheet = CType(ExcelBook.Worksheets(1), Excel.Worksheet) Label1.Text = ExcelSheet.Cells(1, 1).ToString

  • VBでEXCELのシートのコピーに関して

    同一Book内で、シートのコピーをしようと考えて、幾つかのHPを参考に、以下のような 記述をしました。 その際に、以下の記述をした場合、本来はコピー先のシート名を変更したいにも関わらず、コピー 元のシート名が変わってしまいます。 追加したシートの名前を変更させるには、どのような書き方にすれば良いでしょうか? 自分で記述しておきながら、どのように対応したら良いかわからず。。。 また、以下のような記述をした場合、追加したセル側のシートを操作したいにも関わらず、 コピー元のシートを書き換えてしまいます。 追加したシートのセルを操作したい(値を入力)ような場合は、どのような記述を すれば良いでしょうか。。。 ご教授頂ければと思います。 '既存のEXCELファイルを開く Dim xlFilePath As String = "C:\test.xls" '起動時の処理 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath) '確認のためExcelのウィンドウを表示する xlApp.Visible = True Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = CType(xlSheets.Item(1), Excel.Worksheet) Dim xlSheet2 As Excel.Worksheet = xlBook.Worksheets(1) 'シートのコピー xlSheet.Copy(After:=xlSheet2) 'シートに名前を付ける xlSheet.Name = "TEST" Dim xlRange As Excel.Range 'データの入力セル範囲 xlRange = xlSheet.Range("A1:A1") 'セルへデータの入力 xlRange.Value = “AABBCC”