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

このQ&Aのポイント
  • VBからExcelを使用する際にWithの使い方で困っています。セルに値を入れる際にワークシートから書かなければいけないのか、書き方が間違っているのかわかりません。
  • ExcelをVBから使用する際にWithの使い方で困っています。特にセルに値を入れる際にワークシートから書かなければいけないのかどうかがわかりません。
  • VBでExcelを使用する際にWithの使い方に困っています。セルに値を入れる際にワークシートから書かなければいけないのか、それとも書き方自体が間違っているのかわかりません。
回答を見る
  • ベストアンサー

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 ←エラーになる セルに値を入れる時は、ワークシートから書かなければいけないのでしょうか?それとも書き方が間違っているのでしょうか?よろしくお願いします。

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

  • ベストアンサー
  • miya_777
  • ベストアンサー率31% (44/140)
回答No.1

cellsプロパティのパラメータは1始まりです。 ですので、cells(0,0)でなくcells(1,1)にしてみてください。

関連するQ&A

  • ACCESSからEXCELに出力する際、時間がかかる。

    よろしくお願いします。 ACCESS VBA を使用して、既存のEXCELファイルにデータを出力しているのですが、すごく時間がかかってしまいます。件数が少ない時はそれほど気にならないのですが。時間短縮する方法を教えてください。 Sub S_ExportExcel_ADO() Dim CN As ADODB.Connection Dim rst As ADODB.Recordset Dim objExcel As Excel.Application Dim i As Integer Dim W_SQL As String On Error GoTo Err_S_ExportExcel_ADO Set objExcel = New Excel.Application objExcel.Workbooks.Open ("test.xls") objExcel.Worksheets("sheet1").Select Set CN = CurrentProject.Connection Set rst = New ADODB.Recordset W_SQL = "SELECT * FROM データ" rst.Open W_SQL, CN, adOpenKeyset, adLockReadOnly i = 1 Do Until rst.EOF objExcel.Cells(i, 4) = Trim("" & rst![データ1]) objExcel.Cells(i, 5) = Trim("" & rst![データ2]) objExcel.Cells(i, 6) = Trim("" & rst![データ3]) objExcel.Cells(i, 7) = Trim("" & rst![データ4]) objExcel.Cells(i, 9) = Trim("" & rst![データ5]) '***省略*** objExcel.Cells(i, 35) = Trim("" & rst![データ15]) objExcel.Cells(i, 36) = Trim("" & rst![データ16]) i = i + 1 rst.MoveNext Loop 'EXCEL保存 objExcel.ActiveWorkbook.Close objExcel.Quit rst.Close CN.Close Set rst = Nothing Set CN = Nothing Set objExcel = Nothing End Sub

  • エクセルと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を生成しないようにできますか。 できないようにするには、どうすればいいですか。 全くエクセルは詳しくありません。 お詳しい方、よろしくお願いします。

  • VBでExcelファイルの編集

    VBでExcelファイルを作成しようとしていますが、罫線を引くとき、Rangeで範囲を指定しているんですが矩形でかかれず、一本線だけが書かれてしまいます。 どうしたら四角く矩形で罫線が書かれるか教えてください。 Set objExcel = CreateObject("Excel.Application") 'エクセルオブジェクト作成 objExcel.Visible = False 'エクセルを非表示で objExcel.Workbooks.Add '新規に作る With objExcel.Sheets("Sheet1").Range("a19:k29").Borders(1) .LineStyle = xlContinuous .Weight = 4 .ColorIndex = xlAutomatic End With

  • VB2005でExcelのシートをコピー

    VB2005Expressで開発をしています。 Excelのシートをコピーして同じbookに追加をしたいと思っています。 下記でまずExcelを使用できるようにして  Dim xlApp As New Excel.Application  Dim xlBooks As Excel.Workbooks = xlApp.Workbooks  Dim xlBook As Excel.Workbook = xlBooks.Add '新規のファイルを開く  Dim xlSheets As Excel.Sheets = xlBook.Worksheets  Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)  xlApp.Visible = True 下記で追加できると思うのですが、()内にセットするパラメータが わかりません・・・  xlBook.Worksheets.Copy() どなたかご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • Excelオブジェクトの解放

    VBでExcelを編集しています。 下記コードを実行するとExcelがタスクに残ったままになります。 どうしたら解放されるでしょうか。 (処理は少し省略しています) Dim objExcel as Object Dim objExcelBook as Object Dim objExcelSheet as Object Set objExcel = CreateObject("excel.application") Set objExcelBook = objExcel.Workbooks.Open(パス, 0) Set objExcelSheet = objExcelBook .Sheets(シート名) With objExcelSheet.Range(Cells(1,2),Cells(3,2)).Borders(xlEgeBottom) .LineStyle = xlContinuous End With Set objExcelSheet = Nothing Set objExcelBook = Nothing Set objExcel = Nothing

  • ACCESSでExcelにデータ出力、高速化

    ACCESSのVBAを使ってテーブルのデータを 既存ブックに出力し、別名で保存をしたいのですが、 どうも、処理が遅くて困っています。 改善点がありましたら教えてくださいお願いいたします。 Dim objExcel As Excel.Application Dim xlWrkbk As Excel.Workbook Dim xlWrksh As Excel.Worksheet Dim rs As DAO.Recordset Dim strFilename As String strFilename = CurrentProject.Path & "既存ブック名.XLS" Set objExcel = New Excel.Application Set xlWrkbk = objExcel.Workbooks.Open(Filename:=strFilename, ReadOnly:=True) Set xlWrksh = xlWrkbk.Worksheets("シート名") Set rs = CurrentDb.OpenRecordset("テーブル名", dbOpenSnapshot) With objExcel xlWrksh.Range("A:N").Clear xlWrksh.Range("A2").CopyFromRecordset rs xlWrkbk.SaveAs Filename:=CurrentProject.Path & "新しいブック名.xls" xlWrkbk.Close .Quit rs.Close End With Set rs = Nothing Set objExcel = Nothing Set xlWrkbk = Nothing Set xlWrksh = Nothing

  • Delphiからエクセルを設定

    Delphiから ExcelのSheet1のCells[1,1]からSheet2のCells[1,1]、 Sheet1のCells[1,2]からSheet3のCells[1,1]へとSheet間にリンクを はる方法を教えてください。 Excelは下記のように起動しております。 Excel := CreateOleObject('EXCEL.Application'); Excel.Visible := True; Excel.Workbooks.Add; Excel.WorkBooks[1].Sheets.Add; Excel.WorkBooks[1].ActiveSheet.Name:='Sheet1'; //---Sheet1へデータ送信 Excel.WorkBooks[1].Sheets.Add; Excel.WorkBooks[1].ActiveSheet.Name:='Sheet2'; //---Sheet2へデータ送信 Excel.WorkBooks[1].Sheets.Add; Excel.WorkBooks[1].ActiveSheet.Name:='Sheet3'; //---Sheet3へデータ送信 ここでりんくしたい。

  • VB6.0上でExcelオブジェクトを生成

    VB6.0上でExcelオブジェクトの生成についてです。 その1 Dim xlApp As New Excel.Application Dim xlBook As New Excel.Workbook Dim xlSheet As New Excel.Worksheet Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) と その2 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) と、どちらが良いのでしょうか? 開発環境は  Windows2000  VB 6.0  Excel 2003 です。

  • AccessからExcelに罫線付で出力したい

    Access2010使用。 AccessのクエリからExcelにエクスポートした際、罫線などの体裁を整えて出力したいと思っています。 データは下記のコードでなんとか出るようになりましたが、このコードの中に罫線を引くコードを 入れる方法がどうしてもわかりません。 検索してあれこれ試しましたが「オブジェクトがない」や「サポートしてない」などエラーメッセージ が出てしまい、VBAの基礎知識がない私にはどうしてもわかりませんでした。 どうかアドバイスお願いいたします。 (クエリ名は Q_ABC とします) やりたいことは ・データがある行列に格子線を引き、1行目の項目列の下は二重線、外側は太線にしたい。 ・行の高さを数値で指定したい。 です。なお、行数はその都度増えます。 また、できれば 印刷する際の設定で用紙を「A3横」で、常に横1ページに入るように縮小率を設定しておきたい のですが可能でしょうか? どうぞよろしくお願いします。 Private Sub コマンド0_Click() Set xlapp = CreateObject("Excel.application") Dim xlbook As Excel.Workbook Dim xlsheet As Excel.Worksheet Dim rs As New ADODB.Recordset Dim objEXCEL As Object Dim nYLINE As Integer Dim nXLINE As Integer Dim nRCNT As Integer Dim strWORK As String Set xlApp = CreateObject("Excel.Application") Set objEXCEL = CreateObject("Excel.Application") objEXCEL.Visible = True objEXCEL.Workbooks.Add objEXCEL.sheets.Add re.Open "Q_ABC", CurrentProject.Connection, adOpenKeyset, adLockOptimistic '見出しを書き込む objEXCEL.Range("A1") = "ID" objEXCEL.Range("B1") = "氏名" objEXCEL.Range("C1") = "住所"  == 以下T列まで省略 == '項目名をセルの中央に objEXCEL.Range("A1:T1").HoraizontalAlignment = xlHAilignCenterAcrossSelection Dim yLINE As Integer '行カウンター yLINE = 2  'ループ処理 While rs.EOF = False 'accessからデータのセット objEXCEL.Cells(yLINE, "A") = rs.Fields("ID") objEXCEL.Cells(yLINE, "B") = rs.Fields("氏名") objEXCEL.Cells(yLINE, "C") = rs.Fields("住所") == 以下T列まで省略 == rs.MoveNext yLINE = yLINE + 1 Wend 'シートの列幅の自動調整 objEXCEL.Cells.EntireColumn.AutoFit rs.Close Set rs = Nothing End Sub

  • VB6.0でEXCELにシートを追加したい

    初心者なので、説明がつたないところ、用語の使い方が間違っいるところがあるかと思いますが、今後のためにバシバシ指導お願いします。m(_ _)m VBにてEXCELシートを作成し、それを既存ファイルのシートに追加し、保存したいと考えています。 ・既存ファイルがなけれが新規作成 ・既存ファイルに同名のシートがあれば上書きするか、シ ート名を変更するか聞く 私が考えた流れは、 1.既存ファイルを開く 2.新しいシートを追加する 3.シートの名前をつける 4.既に同名シートがあれば上書きの有無を聞く 5.VBで作ったEXCELシートを既存ファイルのシートにコピー 6.既存ファイルを更新 7.EXCELを閉じる です。 まず、既存シートはコモンダイアログで探し、追加したい既存シートを開くところまではできました。 ただ、 シートを追加しようとすると文字が赤くなって怒られました。 いろいろ調べた結果の文章なので、どうしてここで赤くなるのかが解読できません。 Dim objBook2 As Excel.Workbook Dim objSheet2 As Excel.Worksheet Set objBook2 = objExcel.Workbooks.Open(CDl.FileName) objBook2 .Visible = True Set objSheet2 = objBook2.Worksheets(1) Sheets.Add(after:=Worksheets(Worksheets.Count)) ↑ここでだめでした。 一気にコピーしたほうがいいのかとも思い、下記を記入しましがだめでした。 objSheet.Copy After:=CDl.FileName.Sheets(CDl.FileName.Sheets.Count) 長々とかきましたが、どなたかEXCELシートを追加する記述方法を教えてください。 よろしくお願いします。