AccessVBAによるエクセルファイルの編集

このQ&Aのポイント
  • 【セル範囲】で指定したエクセルシートのレコードをVBAで編集したいが、リンクされたエクセルは編集できないか?
  • AccessVBAを使用してエクセルファイルの特定のレコードを編集したいが、リンクされたエクセルワークシートは編集できないのか疑問。
  • AccessVBAでエクセルファイルの指定範囲のレコードを編集したいが、リンクされたエクセルの編集可否について知りたい。
回答を見る
  • ベストアンサー

AccessVBAによるエクセルファイルの編集

○使用システム  WindowsXP  Access2007 Accessのレコードセットに関係する質問をさせていただきます。 エクセルシートのセル範囲を指定して、下記のようにレコードオブジェクトに取り出しました。   Set ExcelDB = OpenDatabase(OutPutFilePath, False, False, "Excel 8.0;")   SqlLang = "SELECT * FROM " & "[" & 【セル範囲】 & "] WHERE " & 【対象レコード指定】   Set ExcelRS =ExcelDB.OpenRecordset(SqlLang, dbOpenDynaset) その後、.Editでレコードの編集をかけようとしますが「このフィールドはリンクされたExcelワークシートにあるため、編集できません」とのメッセージが出力されました。リンクされたエクセルは編集できないのでしょうか? もし、同様の事象をご存知の方に助言をいただければ幸いです。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

http://support.microsoft.com/kb/904953/ja 法的な問題により、マイクロソフトは、Excel ブック内の範囲を参照するリンク テーブルのデータをユーザーが変更できる機能を Access 2003 および Access 2002 で無効にしました。 下記は2007についての記事 http://office.microsoft.com/ja-jp/access/HA012194191041.aspx Excel データに加えた変更は、リンク テーブルに自動的に反映されます。ただし、Access 側から見た場合、リンク テーブルは読み取り専用であり、その内容や構造に変更を加えることはできません。 だそうです。自社ソフト間で法的な問題ってなんでしょうね。

junroku
質問者

お礼

ご丁寧な回答をありがとうございます。 最近、Accessに慣れてしまってExcelでのセル変更の煩わしさをレコードでの編集でと画策していたところです。仕様というのであれば、別手段で解決しようと思います。

関連するQ&A

  • CSVファイルをACCESSで読み込んで、編集してEXCELに貼り付けたいのですが

    みなさま、こんにちは。 ACCESSのFORMにボタンを作って、イベントのビルドでCSVファイルを読み込んで、編集して指定したEXCELシートに貼り付けようとVBAを組んでいるのですが、困ってしまいました。 データを一気に読み込んだあと、2次元の配列にして aRecord(r, a)にレコードと項目ごとに値をセットしています。 データを編集後、 ES(b).Cells(posR, posC) = aRecord(r, a) でエクセルのセルに値を入れているのですが、この方法だとEXCELを更新することが できなくて困っています。 ACCESS/EXCEL連携で、ACCESSからEXCELシートを更新できるコマンドがあると聞いたことがあるのですが、具体的にどのようなコマンドを どのように使えばよいのか、ご存知ないでしょうか? もしおわかりになる方がいらっしゃいましたら、是非ご教授下さいますよう よろしくお願いいたします。

  • excelファイルをVBで取り込む

    下記のようなプログラムで、excelから表を取り込むのですが、シート名を指定しても、オブジェクトが見つかりませんとエラーが出ます。visualbasicの極意500から抜粋して使用しようとしました。わかる肩よろしくお願いいたします。 Private Sub Command1_Click() Dim DB As Database Dim strConnect As String Dim rst As Recordset strConnect = "Excel 8.0;DATABASE=C:\temp\売上実績.xls" Set DB = OpenDatabase("C:\temp\売上実績.xls", False, False, strConnect) 'テーブル名を指定 Set rst = DB.OpenRecordset("売上$", dbOpenTable) Do While Not rst.EOF Debug.Print rst!売上高 rst.MoveNext Loop rst.Close DB.Close Set DB = Nothing Set rst = Nothing End Sub

  • DAOでODBC経由のRDBに接続し、SQLでアクセスしたい。

    Dim ws As DAO.Workspace, db As DAO.Database Dim rs As DAO.Recordset ' デフォルトのワークスペースを定義する Set ws = DBEngine.Workspaces(0) ' ODBC接続文字列を指定してデータベースを開く Set db = ws.OpenDatabase("", False, False, _ "DSN=SQL_K;ODBC;Driver={SQK_K};" & _ "SERVER=(local);DATABASE=pubs;" & _ "UID=*****;PWD=*****;" ' SQLステートメントを指定してレコードセットを作成する Set rs = db.OpenRecordset("select * from TWSQLK1",dbOpenDynaset, dbSeeChanges)   このレコードセットは正常に行きますが   直接SQLを記述する方法が、わかりません   

  • エクセル97で、シート内の範囲を 同じファイルの別シートに、リンクさせたいのですが。

    いつも、お世話になっております。 エクセルについて、ぜひ、教えて頂ければと思います。 エクセルで、”ア”というシートのA10:AG30の範囲の計算式、書式を含む全てを 同じファイル内の、”イ”というシートに、リンクさせたいのですが、どの様にすれば、よろしいですか。 1つのセル指定の場合は、うまく行くのですが、範囲を大きくすると、エラーが出てしまう状況です。 計算式で、一度に、”=シート名と、セルをリンクさせようとしたのですが、うまく行かないのです。 どなたか、ぜひ、教えて頂ければと思います。 よろしくお願いいたします。

  • 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

  • DAOでのOpenRecordsetの方法

    SQLServerのDBをDAOを使って更新しようとしていますが、方法がわからず困っています。 ------------------- private Cn as DAO.Database private function fnc1() as integer Dim ws As DAO.Workspace Dim rcdst1 As DAO.Recordset dim strCnct As String dim strSQL As String strCnct = "ODBC;Driver={SQL Server};SERVER=" & g_strSVName & ";DATABASE=" & g_strDBName & ";UID=" & strpUserID & ";PWD=" & strpPassword & ";" 'DB接続 Set Cn = ws.OpenDatabase("", False, False, strCnct) strSQL = "SELECT * FROM Table1" Set rcdst1 = Cn.OpenRecordset(strSQL, dbOpenDynaset, dbDenyWrite, dbOptimistic) ------------------------------------- このOpenRecordsetで ODBC--すべてのレコードをロックできません。(3254) のエラーが出ます。 また、OpenRecordsetを Set rcdst1 = Cn.OpenRecordset(strSQL, dbOpenDynaset) とすると rcdst1.Edit で データベースまたはオブジェクトは読み取り専用なので、更新できません。 のエラーが出ます。 どうしたらいいでしょうか。

  • AccessからExcelを編集

    Access2003からExcelを編集したいのですが、 いろいろとWebで見ているのですが、よくわかりません。 例えば、 AccessからTEST.xlsのシート「データ」のA10のセルに「てすと」と入れるとします。 最後に上書きします。 申し訳ありませんが、わかる方、教えて下さい。

  • EXCELのシートの色を元に戻したい

    知人からもらったEXCELのファイルを開いたら、シート全体が真っ白になっていてセルとセルを区切っている線が見えなくて困っています。シート全体を範囲指定して、塗りつぶしなしとしても元に戻りません。赤や青などの違う色にすると塗りつぶしができるのです。(なんで?)どうすればふつうのEXCELのシートに戻るのか教えてください。 *EXCEL2000使用

  • エクセルの編集について

    同一の書式で作成したシートが30ページ分あります。 同じ位置のセルを指定して、一括で書換え編集したいのですが、 違うシート同士を同時指定して編集するにはどのようにしたらよいのでしょうか。 ご存知の方がおられましたらアドバイスお願いします。

  • EXCELで自動的にデータレコードを追加する方法について

    EXCELシートのレコードを自動的に追加して生きたいのです。というのは2枚のEXCELシートがあって1枚のシートは入力フォームになっていて他のフォームにアクセスのようなレコードを作り1行目のレコードにリンクさせます。この場合1枚目の入力シートにデータ追加するたびに2枚目のシートにレコードが追加される方法がないでしょうか。マクロを使ってコピー貼り付けではできません。もちろんデータのフォームではデータ貼り付けを受け付けませんのでだめです。アクセスまがいのことをEXCELでしようとしているのですが。どなたかヒントいただけませんでしょうか。

専門家に質問してみよう