• 締切済み

VB6からExcellのSheetNo.の設定方法

VB6で、Excellを使用するアプリケーションを作成中です。 下記の手順でExcellファイルをオープンしていますが、SheetNo.を指定する方法が判りません。VB6は全くの初心者でExcellファイルを開くやり方もネットからもってきたもので、意味も判らないまま使用しています。 よろしく御願いします。 Dim fnm As String Dim exl As Object gStrExcelDir = CurDir         'gStrExcelDir:String変数 fnm = gStrExcelDir + "\ファイル名" Set exl = CreateObject("Excel.Application") exl.Application.Workbooks.Open FileName:=fnm ここまででファイルのオープンは出来ていて、SheetNo.1のセルのデータ読み込みは出来ます。 この後、別なSheetNoを設定する方法が判りません。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >Excellファイルを開くやり方もネットからもってきたもの ここですか? http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t16.htm Excel側からみると、とても雑だと思います。結果論だから、どうでも良いかもしれませんが。 たとえば、これって、 exl.Cells(c, l) 既存のブックに、オートメーション・オブジェクトの配下に対して、exl.Cells(j, i) こういうコードは書きません。それと、gStrExcelDir これって、Global 変数の意味だと思いますが、CCur を代入するなら、その必要性があるか、見えてきません。 >どちらの場合も”実行時エラー:'424'オブジェクトが必要です”とエラーメッセージがでます。 これが、どこで発生しているかはわかりませんが、ローカル・ウィンドウから、ステップモードで、オブジェクトが取れているのか、チェックすれば分かると思います。 #1の方のアドバイスで直らないというと、全体的に良く分かりませんので、こちらからは何もいえないように思います。このぐらいの内容ですと、何をどうするか、と書いてもらって、回答者にコードを書いてもよいと思います。ただ、VB6は、旧アプリケーションですから、VBAを代用して書くことになるだろうと思います。私は、今はインストールしていません。 それと、Excelをお持ちでしたら、最初、参照設定させて、インテリセンスを使って書いてしまったほうが早いのでは? その後で、参照設定を外して、クラス名を、As Object にしてしまってもよいと思います。

sansaiji
質問者

補足

回答ありがとうございます。 正直、回答の意味が理解できないという初心者です。 たまたま別のルートからの回答があり、それでうまくいきました。 修正内容は下記の通りです。 strSheetNo = exl.Cells(c, l)            従来       ↓ strSheetNo = exl.Worksheets("Over_C").Cells(c, l)  修正後

  • OMEGAT
  • ベストアンサー率70% (455/642)
回答No.1

Dim fnm As String Dim exl As Object Dim xlsBook As Object Dim xlsSheet As Object gStrExcelDir = CurDir         'gStrExcelDir:String変数 fnm = gStrExcelDir + "\ファイル名" Set exl = CreateObject("Excel.Application") Set xlsBook = exl.Application.Workbooks.Open (fnm) 'シートへのアクセスは Set xlsSheet = xlsBook.Sheets(2) 'もしくは Set xlsSheet = xlsBook.Sheets("シート名") 'セルの値へのアクセスは MsgBox xlsSheet.Cells(1,1).Value 'などでアクセスできると思います。

sansaiji
質問者

補足

ありがとうございました。早速試してみました。 Set xlsSheet = xlsBook.Sheets(2) Set xlsSheet = xlsBook.Sheets("シート名") どちらの場合も”実行時エラー:'424'オブジェクトが必要です”とエラーメッセージがでます。 ちなみにセルの値は strSheetNo = exl.Cells(c, l)    'c、lはInteger で読み取ることが出来ています。 また、Sheet名はSheet1,2ではなく内容をあらわす文字にしています。 別の所に問題があるのかもしれません。

関連するQ&A

  • VB6からExcellのSheetNo.を設定する方法

    VB6でEcellをデータベースとして使用します。 Excellのファイルを開きSheet1のセルデータを読み込むことは出来ますが、Sheet2以降のシートを指定する方法が判りません。教えてください。Ecellファイルは下記の手順でオープンしてます。 Dim fnm As String Dim exl As Object gStrExcelDir = CurDir fnm = gStrExcelDir + "ファイル名" Set exl = CreateObject("Excel.Application") exl.Application.Workbooks.Open FileName:=fnm ここまででSheet1のセルデータの読み込みはできます。 次に新しいSheetNo.を設定する方法が判りません。 よろしく御願い致します。

  • VB6でEXCELをクローズ出来ない

    VB6でEXCELを使用した後クローズ処理をしたつもりですが、VBと別にEXCELを起動しVBで使ったEXCELを読み込もうとすると、「編集のためロックされています」とメッセージが出て、読み取り専用でしかオープン出来ません。また、VBでEXCELを繰り返しオープンするとメモリがいっぱいになってしまいます。 VBでのEXCELオープンは Dim fnm As String Dim exl As Object fnm = "EXCEL File名" 'フルパスで指定 Set exl = CreateObject("Excel.Application") exl.Application.Workbooks.Open FileName:=fnm クローズは Set exl = CreateObject("Excel.Application") exl.Application.Quit Set Sheet = Nothing Set BooK = Nothing Set ExcelApp = Nothing 以上です。なお、VBの参考書は入門書だけ持っていますが、このようなことは書いてありません。従って上のコードも意味もわからず、ネットから拾ってきたまま使用しています。参考書または、Webサイトを紹介して頂ければ有り難いです。

  • VB2008でEXCELのセルデータが読めません

    VB2008でEXCELを開き、セルの内容を読み込もうとしましたが読み込めません。 EXCELのオープンとセルの読み込みは下記により行いました。 Dim strExcelFile As String 'エクセルファイル Dim xlApp As Excel.Application       Dim strExcelData As String xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Open(Filename:=strExcelFile) xlApp.Visible = True 'EXCELは表示されている strExcelData = xlApp.Cells(3,4).ToString EXCELの3列4行には数値が入っていますが、strExcelDataには"System._ ComObject"というデータが読み込まれています。 ToStringは、これをつけないとデータの型が違うとエラーになります。 EXCELのデータは文字型と思っていましたがこれも判りません。 VBのMicrosoft Excel9.0Object LibraryをクリックしてOKしています。 原因の見当が皆目つかず困っています。

  • VB2008でEXCELのセルデータが読めません

    VB2008でEXCELを開き、セルの内容を読み込もうとしましたが読み込めません。 EXCELのオープンとセルの読み込みは下記により行いました。 Dim strExcelFile As String 'エクセルファイル Dim xlApp As Excel.Application       Dim strExcelData As String xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Open(Filename:=strExcelFile) xlApp.Visible = True 'EXCELは表示されている strExcelData = xlApp.Cells(3,4).ToString EXCELの3列4行には数値が入っていますが、strExcelDataには"System._ ComObject"というデータが読み込まれています。 ToStringは、これをつけないとデータの型が違うとエラーになります。 EXCELのデータは文字型と思っていましたがこれも判りません。 VBの参照で「Microsoft Excel9.0Object Library」をクリックしてOKしていますが、チェックマークなどはつかず、正しく反映されたかについては未確認です。 原因の見当が皆目つかず困っています。 誤って「ディジタルライフ」-「その他」に同じ内容で投稿しています。

  • excelのデータをvbにとりこむ

    excelのあるセルのデータを取り込みたいのですが、 どうすればよいでしょうか? C:\123.xlsというファイルのsheet1の (2,4)というセルにある実数型のデータを 出力するという、意図です。 Private Sub Setting_Click() Dim xls As Object Dim xlsFilename As String Dim xlsSheetname As String xlsFilename = "C:\123.xls" xlsSheetname = "Sheet1" Set xls = CreateObject("Excel.Application") xls.Application.Visible = False xls.Application.Workbooks.Open xlsFilename Dim r1 As Double r1 = xls.Application.Workbooks.cells(2, 4).Value Print r1 end sub

  • データの取り込み

    VB6.0 SQLSERVER で開発しています。  EXCELにあるデータをSQLへ取り込みたいのですが 下記のようにすると取り込めるのですが EXCELに空白があるとエラーが出ます。 教えてください。  Dim strSQL As String Dim adoRsWork As ADODB.RecordSet Dim exl As Object Dim i As Integer Dim k As Long Dim mds As Boolean Dim rs As Variant Dim j As Integer Dim s As String Dim ct As Long Dim fno As Integer Dim fnm As String strSel1 = "SELECT" strSel1 = strSel1 & " A.品番" strSel1 = strSel1 & ",A.品名" strSel1 = strSel1 & ",A.倉番" strSel1 = strSel1 & ",A.数量" strFro1 = " FROM " strFro1 = strFro1 & " A_zaiko AS A" strSQL = strSel1 & " " & strFro1 Debug.Print (strSQL) Set adoRsWork = pbAdo.OpenRecordset(strSQL) Set exl = CreateObject("Excel.Sheet") mds = True fnm = "C:\Documents and Settings\デスクトップ\159.xls" j = adoRsWork.Fields.Count - 1 ReDim ctyp(j) As Boolean For i = 0 To j Select Case adoRsWork(i).Type Case 131, 139 ctyp(i) = True Case Else ctyp(i) = False End Select Next adoRsWork.Close Set exl = CreateObject("Excel.Application") exl.Application.Visible = True exl.Application.Workbooks.Open FileName:=fnm k = 1 If mds Then k = 2 End If gSvrADOActiveconnection.BeginTrans On Error Resume Next For k = k To 65536 s = "" If exl.Cells(k, 1) = "" Then Exit For For i = 0 To j If ctyp(i) Then s = s & "," & exl.Cells(k, i + 1) Else s = s & ",'" & exl.Cells(k, i + 1) & "'" End If Next s = Mid(s, 2) strSQL = "insert into " & strFro1 & " values (" & s & ")" pbAdo.OpenRecordset (strSQL) If Err <> 0 Then gSvrADOActiveconnection.RollbackTrans Close fno adoRsWork.Close MsgBox "更新エラー" & Chr(10) & Err & ": " & Error _ & Chr(10) & ct + 1 & " 件目に問題あり" _ & Chr(10) & strSQL End End If ct = ct + 1 Next gSvrADOActiveconnection.CommitTrans On Error GoTo 0 exl.Application.DisplayAlerts = False exl.Application.Quit adoRsWork.Close

  • データの取り込み

    VB6.0 SQLSERVER で開発しています。  EXCELにあるデータをSQLへ取り込みたいのですが 下記のようにすると159.xlsは開くのですがその後FORM付近で正しくない構文があります。とエラーになってしまいます。 何処がおかしいのでしょうか? 教えてください。  Dim strSQL As String Dim adoRsWork As ADODB.RecordSet Dim exl As Object Dim i As Integer Dim k As Long Dim mds As Boolean Dim rs As Variant Dim j As Integer Dim s As String Dim ct As Long Dim fno As Integer Dim fnm As String strSel1 = "SELECT" strSel1 = strSel1 & " A.品番" strSel1 = strSel1 & ",A.品名" strSel1 = strSel1 & ",A.倉番" strSel1 = strSel1 & ",A.数量" strFro1 = " FROM " strFro1 = strFro1 & " A_zaiko AS A" strSQL = strSel1 & " " & strFro1 Debug.Print (strSQL) Set adoRsWork = pbAdo.OpenRecordset(strSQL) Set exl = CreateObject("Excel.Sheet") mds = True fnm = "C:\Documents and Settings\デスクトップ\159.xls" j = adoRsWork.Fields.Count - 1 ReDim ctyp(j) As Boolean For i = 0 To j Select Case adoRsWork(i).Type Case 131, 139 ctyp(i) = True Case Else ctyp(i) = False End Select Next adoRsWork.Close Set exl = CreateObject("Excel.Application") exl.Application.Visible = True exl.Application.Workbooks.Open FileName:=fnm k = 1 If mds Then k = 2 End If gSvrADOActiveconnection.BeginTrans On Error Resume Next For k = k To 65536 s = "" If exl.Cells(k, 1) = "" Then Exit For For i = 0 To j If ctyp(i) Then s = s & "," & exl.Cells(k, i + 1) Else s = s & ",'" & exl.Cells(k, i + 1) & "'" End If Next s = Mid(s, 2) strSQL = "insert into " & strFro1 & " values (" & s & ")" pbAdo.OpenRecordset (strSQL) If Err <> 0 Then gSvrADOActiveconnection.RollbackTrans Close fno adoRsWork.Close MsgBox "更新エラー" & Chr(10) & Err & ": " & Error _ & Chr(10) & ct + 1 & " 件目に問題あり" _ & Chr(10) & strSQL End End If ct = ct + 1 Next gSvrADOActiveconnection.CommitTrans On Error GoTo 0 exl.Application.DisplayAlerts = False exl.Application.Quit adoRsWork.Close

  • EXCELへのデータ出力

    VB6.0で開発しています。 下記のようにEXCELへのデータ出力は出来たのですが EXCELのシートのA列とB列は文字列にしたいのです。 今はA列とB列に数字を入れると右詰になってしまいます。 どうすればいいでしょうか? 教えてください。 Dim s3cn_ado As variant Dim dsn As String Dim tbl As String Dim tky As String Dim sql As String Dim rs As variant Dim fnm As String Dim mds As boolean Dim fno As Integer Dim i As Integer Dim j As Integer Dim k As long Dim s As String Dim ct As long Dim exl As Object dsn = "dsn=SAK3_ADO;uid=SAK;pwd=SAK" tbl = "sak.受注m" tky = "受注番号 = ''" '0 件のダミー問い合わせ用のキー" fnm = "g:\tmp\test.xls" mds = true set s3cn_ado = CreateObject ("ADODB.Connection") s3cn_ado.Open dsn sql = "select * from " & tbl & " where " & tky set rs = s3cn_ado.Execute(sql) j = rs.fields.count - 1 redim ctyp(j) as boolean For i = 0 to j select case rs(i).type case 131, 139 ctyp(i) = true case else ctyp(i) = false end select Next rs.close Set exl = CreateObject("Excel.Application") exl.Application.Visible = True exl.Application.Workbooks.Open FileName:=fnm k = 1 if mds then k = 2 end if s3cn_ado.BeginTrans on error resume next for k = k to 65536 s = "" If exl.Cells(k, 1) = "" Then Exit For For i = 0 To j if ctyp(i) then s = s & "," & exl.Cells(k, i + 1) else s = s & ",'" & exl.Cells(k, i + 1) & "'" end if Next s = mid(s, 2) sql = "insert into " & tbl & " values (" & s & ")" s3cn_ado.Execute sql if err <> 0 then s3cn_ado.RollbackTrans close fno s3cn_ado.Close msgbox "更新エラー" & chr(10) & err & ": " & error _ & chr(10) & ct + 1 & " 件目に問題あり" _ & chr(10) & sql end end if ct = ct + 1 next s3cn_ado.CommitTrans on error goto 0 exl.Application.DisplayAlerts = False exl.Application.Quit s3cn_ado.Close

  • SETを使ったほうがよい?

    accwessからエクセルファイルを開きたいのですが、 App.Workbooks.Open と、 Set xlBook = xlApp.Workbooks.Open とどちらを使った方がいいのでしょうか? ////////////////////////////////////////////////////////// Private Sub ファイル1_Click() Dim App As Object Dim MyFileName As String MyFileName = "D:\My Documents\test.xls" Set App = CreateObject("Excel.Application") App.Workbooks.Open FileName:=MyFileName App.Visible = True End Sub でも Private Sub ファイル2_Click() Dim xlApp As Object Dim xlBook As Object Dim FileName As String Const FolderName = "D:\My Documents\test.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(FolderName & FileName) xlApp.Visible = True Set xlApp = Nothing Set xlBook = Nothing End Sub ////////////////////////////////////////////////////////// でも開けました。 多分、SETを使うかどうかの違いだと思うのですが VBAでコードを作る際、どちらのコードを使った方がいいか教えてください。

  • VB.net(2005)でエクセルの特定名称のシートを操作したい。

      お世話になります。 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 よろしくお願い致します。  

専門家に質問してみよう