現在下記のようなコードでテストしています。

Sub Sample()

Dim TargetBook As Workbook

   Set TargetBook = Workbooks.Open("Book2.xls")
   TargetBook.Sheets("Sheet1").Cells(1, 5) = Cells(1, 1)
   TargetBook.Close

End Sub

Book2を開いてセルの読み書きはテストできました。
これをBook2をopenせず閉じた状態で操作したいと思っています。
Workbooksの表示されるメソッドを色々試してみますが出来ません。
OpenDatabaseが使用できるのかと思いますが、出来ません。
ご指導よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

Sub Sample2()


Dim myPath As String
Dim fn As String
  myPath = Application.DefaultFilePath 'パス
  fn = "Book2.xls" 'ファイル名
  'R1C1型で書く
  ret = Application.ExecuteExcel4Macro("'" & myPath & "[" & fn & "]Sheet1'!R1C1")
  ThisWorkbook.Sheets("Sheet1").Cells(1, 5) = ret
End Sub

他にも、
>OpenDatabaseが使用できる
ODBC(Open Database Connectivity)という意味でしたら、[外部データの取り込み]から操作します。ただし、その使用する列全体を使用してしまいますので、取り込みには、その以下にデータを置くことは出来ない欠点があります。

Office をインストールしていれば、Jet はインストールしていますから、当然、ADODBなどは利用できますが、意外に面倒かもしれません。フィールドがなくても取得できます。

この回答への補足

bookを閉じた状態で読み込みする事が出来ました。
逆に書き込みを行うとした時にエラー424 オブジェクトが必要ですと出ます。
このメソッドで書き込みは出来ないのでしょうか?
Application.ExecuteExcel4Macro("'" & myPath & "[" & fn & "]Sheet1'!R1C1") = "test"

補足日時:2011/01/07 08:14
    • good
    • 4

#3の追伸です。



ここをご覧になってください。

http://support.microsoft.com/kb/278973/ja
ADO を使用して Excel ブックのデータの読み取りおよび書き込みを行う方法 (ExcelADO)

サンプルファイル(ExcelADO.exe)もおいてあります。
    • good
    • 1

>逆に書き込みを行うとした時にエラー424 オブジェクトが必要ですと出ます。


>このメソッドで書き込みは出来ないのでしょうか?

ExecuteExcel4Macro(一般数式) Index 関数の利用も可能です。配列自体は取り出せませんが、配列からひとつの解を求めることは可能です。

これは読み出し専用です。書き込みするには、#2さんの方法や、ADODBやDAOを使いますが、ADODBをキーワードにして、Web検索をすればヒットするかとは思います。しかし、私自身、数年に1度書くかしないか程度で、実務的ではないし、しいてやれないことはない、という程度です。あまり、掲示板で披露した記憶がありません。

また、ADODBは、Excelの場合は、内部オブジェクトが備わっていないので、インスタンスを生成してから、値取得の段階に入っていきます。したがって、その時オーバーヘッドが掛かり、あまり思ったほどの効果はありません。

私からのアドバイスとしては、標準的な、ファイルを開いて、閉じる方法で良いのではないかと思います。

特に、#2さんの
Application.ScreenUpdating = False
 値-取得・値-書込
Application.ScreenUpdating = True
で、画面の変更のロスが減りますので、その分、時間が短縮できます。

私自身では、ADODB等で取得する場合は、データベースファイルに限ります。やはり、ファイルをOpenメソッドで開けて、それで書きこんで、保存するというオーソドックスな方法を使います。作成中に、目視して確認出来るという利点もあります。

なお、変則的には、私は、CreateObject("Excel.Application") というオートメーション化して使う場合があります。他の開いているブックに影響を受けないのと、マクロセキュリティに影響を受けない利点があります。しかし、これは、気を付けないと、メモリに残してしまうというミスを起こすことがあります。もうひとつは、絶対的とは言いませんが、.Value プロパティの省略などは、しないように注意しなければなりません。
    • good
    • 0

開かないで操作する方法は存じませんが、開いたことを気づかせずに操作するなら以下でどうでしょう?



マクロを書いたBOOKのアクティブなシートのA1セルの値を転記するなら

Sub Sample01()
  Dim TargetBook As Workbook
  Dim ws As Worksheet
  Set TargetBook = Workbooks.Open("Book2.xls")
  Set ws = ThisWorkbook.ActiveSheet
  With Application
    .ScreenUpdating = False
    TargetBook.Sheets("Sheet1").Cells(1, 5) = ws.Cells(1, 1)
    TargetBook.Close (True)
    .ScreenUpdating = True
  End With
End Sub

そうではなく、BOOK2のシート1のA1セルの値を転記するなら

Sub Sample02()
  Dim TargetBook As Workbook
  Set TargetBook = Workbooks.Open("Book2.xls")
  Application.ScreenUpdating = False
  With TargetBook
    .Sheets("Sheet1").Cells(1, 5) = .Sheets("Sheet1").Cells(1, 1)
    .Close (True)
  End With
  Application.ScreenUpdating = True
End Sub
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q復元ポイントの作成とイメージファイル等のバックアップとの違いについて

今晩は、宜しくお願いします。

復元ポイントの作成とイメージファイル等のバックアップとの違いについて教えて下さい。

Windowsで復元ポイントからシステムを復元させる方法があり、
また、イメージファイル等にバックアップをとり、復元させる方法もありますが
この両者はどのように違うのでしょうか。

復元ポイントの作成とは、その時点のシステムの設定等だけを保存しているという
ことでしょうか。

また、イメージファイル等のバックアップを作成するということは
システム設定と作成したファイル等もイメージファイルとして一括してバックアップ
されるのでしょうか。

イメージファイルの復元時に、作成したファイル等もイメージファイルから
復元されるのなら、同じ名前のファイルがあった場合には、
イメージファイル作成時の古い情報のファイルになってしまうのでしょうか。

以上、宜しくお願いします。

Aベストアンサー

【システムの復元】
Windowsが使用するシステムファイルのバックアップと復元。
ユーザーファイルには影響しない。
HDDの中に作成されるので、Windowsが起動しない環境では使用出来ない。

【システム修復ディスクの作成】
Windowsの起動時にF8を押下して起動するセーフモードから「コンピューターの修復」「システム回復オプション」を、外部記憶装置(CD、USBメモリなど)から起動出来るようにする。
Windows自体が起動しなくなった場合に、外部記憶装置から「システム回復オプション」が起動出来るようになる。修復されるのは、選択した項目により異なる。
WindowsREを利用。
https://msdn.microsoft.com/ja-jp/library/hh825173.aspx

【バックアップと復元】
システムのバックアップを作成し、ハードディスクなどが壊れた場合に備えパソコン内部のデータを全てバックアップ・復元出来る。
Windowsのインストールディスクや、システム修復ディスクから復元が可能。
システムもユーザーデータもバックアップを取った時点の状態に戻る。

【システムの復元】
Windowsが使用するシステムファイルのバックアップと復元。
ユーザーファイルには影響しない。
HDDの中に作成されるので、Windowsが起動しない環境では使用出来ない。

【システム修復ディスクの作成】
Windowsの起動時にF8を押下して起動するセーフモードから「コンピューターの修復」「システム回復オプション」を、外部記憶装置(CD、USBメモリなど)から起動出来るようにする。
Windows自体が起動しなくなった場合に、外部記憶装置から「システム回復オプション」が起動出来るようになる。...続きを読む

QVBAでファイルを開いてないときに開くコード

いつもお世話になります。
VBA(Excel2007)の初心者です。

目的のファイルが開いていない時は開き、
既に開いている時は何もしない。
という処理をしたいと思い以下のコードを
書きました。

Dim wb As Workbook
Dim myfilename As String

For Each wb In Workbooks
If wb.Name = "予定表.xls" Then
Exit For
Else
myfilename = "\\___\__\予定表.xls"
Workbooks.Open Filename:=myfilename
End If
Next wb

実行したら何度もファイルを開こうとしてしまいます。
どこに問題があるのでしょうか?

ちなみにこれは"予定表.xls"のセルを参照したくて
ある処理の前に実行するつもりなのですが、
別のブックのセルを参照するときはやはり
そのブックを開かなくてはならないのでしょうか?

何卒よろしくお願いします。

いつもお世話になります。
VBA(Excel2007)の初心者です。

目的のファイルが開いていない時は開き、
既に開いている時は何もしない。
という処理をしたいと思い以下のコードを
書きました。

Dim wb As Workbook
Dim myfilename As String

For Each wb In Workbooks
If wb.Name = "予定表.xls" Then
Exit For
Else
myfilename = "\\___\__\予定表.xls"
Workbooks.Open Filename:=myfilename
End If
Next wb

実行したら...続きを読む

Aベストアンサー

こんにちは。

こんなスタイルになります。

'-------------------------------------------
Sub Test1()
  Dim Wb As Workbook
  Dim mPath As String
  Const FNAME = "予定表.xls" 'ファイ名
  mPath ="\\___\__ & "\" 'ディレクトリパス--'規定の場所は、Application.DefaultFilePath & "\"
  
  On Error GoTo Errhandler
   Workbooks(FNAME).Activate
  '------------------------------------------- ここから実際のプログラム
   Set Wb = Workbooks(FNAME)
   MsgBox Wb.Name & " " & Wb.ActiveSheet.Name
  
  Exit Sub
Errhandler:
  If Err.Number = 9 Then
    Workbooks.Open mPath & FNAME
    Resume Next
  End If
End Sub

こんにちは。

こんなスタイルになります。

'-------------------------------------------
Sub Test1()
  Dim Wb As Workbook
  Dim mPath As String
  Const FNAME = "予定表.xls" 'ファイ名
  mPath ="\\___\__ & "\" 'ディレクトリパス--'規定の場所は、Application.DefaultFilePath & "\"
  
  On Error GoTo Errhandler
   Workbooks(FNAME).Activate
  '------------------------------------------- ここから実際のプログラム
   Set Wb = Workbooks(FNAME)
  ...続きを読む

Q救出ファイル復元 2の機能について

「救出ファイル復元 2」で画像ファイルJPEGの他にRAWファイル、拡張子(CR2)を復元出来るでしょうか。

キャノンの一眼デジカメを使っているのですが、他の復元ソフトでは、復元出来ませんでした。

Aベストアンサー

Vectorあたりで『ディスク・ファイル復旧』の項目で探せばみつかりそうですが。
要は,"復元ソフトで復元できるファイルがソフトに登録されている拡張子だけしかできない"ことですので,拡張子を選択できる復元ソフトを捜せばいいと思われます。

参考URL:http://www.vector.co.jp/vpack/filearea/win/util/disk/care/

QExcel VBAでグラフの操作をする。

Excel VBAでグラフの操作をする。

したいことは、アクティブのグラフ(散布図)の仕様(大きさ、色等)を他のグラフにも適応させるということです。
おもに2点質問があります。


(1)マーカー情報の取得を行いたいのですが、
 MyMS=Selection.MarkerStyle
 (たとえば、xlCircle等を変数に格納したい)
としたい場合、MyMSはオブジェクト型になるのでしょうか?
つまり Dim MyMS As Object
となるのでしょうか?

(2)散布図の線の太さを指定するのに、
 xlHairline
 xlThin
 xlMedium
 xlThick
とありますが、「データ系列の書式設定」では数字の入力が可能です。
その数字で指定または取得はできないのでしょうか?

 .weight=xlThin を .weight=1.5

などです。

よろしくお願いします。

Aベストアンサー

>1
Object型では通りませんでした。
Long
あるいは
XlMarkerStyle
で通るようです。

>2
≪ヘルプより抜粋≫
名前     値    説明
xlHairline  1    細線 (最も細い罫線)
xlMedium   -4138  普通
xlThick    4    太線 (最も太い罫線)
xlThin    2    極細

Q削除した画像ファイルの取り出しまたは復元方法

ごみ箱に入れてから削除したファイルの復元方法を教えてください。

以前にも同様の質問をしたのですが、その際に教えていただいた方法で確かにいくつかのファイルは復元することができました。

しかし、一番復元したい画像ファイル(jpeg形式)が復元できません、同時期に同じく削除したファイルは無事に取り出せたのですが肝心のファイルは取り出せません。指定するファイル名、フォルダ名などの間違いはないのですが何が原因で復元できないのか理解できません。

良きアドバイスをいただければ助かります。
宜しくお願いいたします。

Aベストアンサー

こういったファイル復元ソフトを利用してファイルを復活させます。

●FileRecovery(フリーウェア)

消去・欠損したファイルを復元するソフト。
http://www.pcinspector.de/download.htm

●復元(フリーウェア)
http://www.vector.co.jp/soft/win95/util/se192983.html

■FINALDATA(ファイナルデータ)フォトリカバリー3.0(有料)
http://www.finaldata.ne.jp/f_8_3.html

当然ながら復元できる確立は有料ソフトのほうが高いです。

これらを使っても復元できない場合はファイルが上書きされて完全に消えている可能性が高いです。

QExcel 2007

Excel 2007 <VBAでグラフの操作>

現在すでにあるグラフを修正しています。
下記マクロでは「各グラフに系列が2つあり、その1つ目を削除して残る1つのデータ範囲(X軸の値)を再設定する」という内容です。

下記マクロではFor構文冒頭のSet~の行で、
「実行時エラー '1004': 'Cells'メソッドは失敗しました:'_Global'オブジェクト」
とのエラーが出ます。
このエラーについて検索してみたのですが、これといったものが見つからなかったので、このマクロでおかしなところがあれば直接指摘していただけないでしょうか。

よろしくお願いします。


Private Sub Test_Arrange()
  Dim MyRng As Range
  Dim R As Integer
  Dim n As Integer
  Dim i As Integer

  n = 10
  R = Sheets("Sheet1").Range("A1").End(xlDown).Row

  For i = 1 To n
    Set MyRng = Sheets("Sheet1").Range(Cells(2, 2 * n + 3), Cells(R, 2 * n + 3))
    Charts(i).SeriesCollection(1).Delete
    Charts(i).SeriesCollection(1).XValues = MyRng
  Next i
End Sub

Excel 2007 <VBAでグラフの操作>

現在すでにあるグラフを修正しています。
下記マクロでは「各グラフに系列が2つあり、その1つ目を削除して残る1つのデータ範囲(X軸の値)を再設定する」という内容です。

下記マクロではFor構文冒頭のSet~の行で、
「実行時エラー '1004': 'Cells'メソッドは失敗しました:'_Global'オブジェクト」
とのエラーが出ます。
このエラーについて検索してみたのですが、これといったものが見つからなかったので、このマクロでおかしなところがあれば直接指摘していただけないでしょ...続きを読む

Aベストアンサー

CellsにもSheets("Sheet1")をかけてみてください。

With Sheets("Sheet1")
Set MyRng = .Range(.Cells(2, 2 * n + 3), .Cells(R, 2 * n + 3))
End With

あと
XValuesはX軸(項目軸)データになります。
Y軸(数値軸)データは、Valuesです。
大丈夫ですか?

Q「ウイルス感染ファイル」削除後のシステム復元でどうなる?

ウイルスバスターで幾つかのウイルス感染ファイル発見し全て削除しましたが、感染したファイルはシステムファイルでしたので少し心配でしたが削除しました。
そこで教えて頂きたいのですが、感染した日付以前でシステムの復元をする事によって削除されたシステムファイルは復元できるのでしょうか?一度削除されたシステムファイルはシステムの復元をしても二度と復元しないのでしょうか?

Aベストアンサー

以下WindowsXPという前提で・・・

>システムファイルでしたので少し心配でしたが削除しました。
通常、このままではシステムエラーが発生します。
しかし、Windowsには自動復旧機能があり、削除されたファイルをハードディスク上にあるCabファイルから呼び出して復旧させるようになっています。
従って、殆どの場合、削除されたシステムファイルを手動でインストールする必要はありません。

☆SFCの実行
もしシステムエラーが出る場合SFC(System File Checker)の実行をお勧めします。

1.CDドライブにOSのインストールディスクを入れておく。
2.「スタート」「コマンドプロンプト」または「ファイル名を指定して実行」で
「sfc /scannow」と入力して「OK」

「Windows XP professional のディスクを入れてください」という表示が出ることがありますがHome Editionであれば「無視」を選んでスキップしてください

>感染した日付以前でシステムの復元をする事によって削除されたシステムファイルは復元できるのでしょうか?
出来ないことはないでしょうが、あまりお勧めできません。
現在の状態が正常でない。
過去の状態の方が快適に操作できる。
という場合、それがいいかもしれません。
しかし、Windowsの設定というのは非常に広範囲にわたっており、現在と過去を比較して、どちらが適正かを判断するのは容易ではありません。
また、過去の復元ポイントの中には不正な設定が含まれている場合があり、間違って、そのポイントを選択することもあります。
ウィルス対策ソフトのサイトでは一旦復元設定を無効にして、過去の復元ポイントを全て消去することを推奨しています。

>一度削除されたシステムファイルはシステムの復元をしても二度と復元しないのでしょうか?
間違った操作をすると汚染されたファイルが復元されてしまいます。
一旦復元設定を無効にして、過去の復元ポイントを全て消去することで汚染されたファイルは二度と復元しません。

以下WindowsXPという前提で・・・

>システムファイルでしたので少し心配でしたが削除しました。
通常、このままではシステムエラーが発生します。
しかし、Windowsには自動復旧機能があり、削除されたファイルをハードディスク上にあるCabファイルから呼び出して復旧させるようになっています。
従って、殆どの場合、削除されたシステムファイルを手動でインストールする必要はありません。

☆SFCの実行
もしシステムエラーが出る場合SFC(System File Checker)の実行をお勧めします。

1.CDドライ...続きを読む

QExcel VBAでIEを操作し値を取得する方法

こん色々調査したのですが分からないのでお教えください。

EXCELのVBAにてIEを操作しているのですが
通常のボタン操作やテキストボックスの値を取得するのは
出来ています。
しかし「インラインフレーム(iframe)」内の値を取得する方法が
分かりません。
どなたかお分かりの方はいますでしょうか?
念のため参考のページ内のソースを一部抜粋させていただきます。



<html>
<head>
<title>SAMPLE</title>
</head>
<body>
<iframe width="400" height="400" src="http://www.yahoo.co.jp"></iframe>
</body>
</html>

Aベストアンサー

>No.1 この回答への補足
iframeタグのsrcを取得、それをNavigateすればどうでしょうか。
と提案したのですが、、、

Set objIE = CreateObject("InternetExplorer.application")
With objIE
.Navigate .document.getElementsByTagName("iframe")(0).src
End With

srcがhttpから始まっていない場合は内部リンクだそうで頭が必要です。
(srcがhttpから始まっているかどうか調べる必要ありですね)
.Navigate "http://○○○/" & .document.getElementsByTagName("iframe")(0).src

Q復元ソフトのふと感じた疑問 -ファイル名を削除したい-

先日、復元ソフトを使用していたときに感じたことなのですが
(使用ソフトは「復元」です。)
ファイルを復元する際の手順で削除したファイルが検索できますよね。
このファイル検索の時に、HITしないようにファイル名を完全に削除したい場合はどのようにすればいいのでしょうか??

例えば、「●●との秘密旅行001.jpg」のファイルを削除したとします。
その後、復元ソフトで検索をかけるとファイルを復元しなくてもファイル名を見ただけで怪しいファイルとわかってしまいますよね。
復元ソフトの検索で、表示されなくする方法か、別名に変える方法があるのなら教えてください。

Aベストアンサー

95159さんが求めていらっしゃるのは以下の方法ではないでしょうか。

フリーの復元ソフトに「DataRecovery」というものがあります。このフリーソフトには「削除したファイル」の名前を時間をかけず簡単に消去できる機能が付いています。

『DataRecovery』
http://www.vector.co.jp/soft/win95/util/se382922.html

■使い方
起動させる→該当ドライブをクリック→[スキャン]ボタンをクリック→削除したファイルの表示完了→「目的のファイルが見つかりましたか?」と出てきたら[キャンセル]をクリック→名前を消去したいファイルをクリックするか、名前を消去したい複数ファイルを左クリックしながら選択する→[消去]ボタンをクリック→[OK]をクリック

これで、名前を消せます。しかしながら完璧ではなくて、一部消せないこともあります。
(「DataRecovery」を再起動してもう一度ドライブをスキャンすると消せなかったファイルが表示されます)

参考URL:http://www.vector.co.jp/soft/win95/util/se382922.html

95159さんが求めていらっしゃるのは以下の方法ではないでしょうか。

フリーの復元ソフトに「DataRecovery」というものがあります。このフリーソフトには「削除したファイル」の名前を時間をかけず簡単に消去できる機能が付いています。

『DataRecovery』
http://www.vector.co.jp/soft/win95/util/se382922.html

■使い方
起動させる→該当ドライブをクリック→[スキャン]ボタンをクリック→削除したファイルの表示完了→「目的のファイルが見つかりましたか?」と出てきたら[キャンセル]をクリック→名...続きを読む

QEXCEL VBAで、グラフの凡例の表示非表示の操作について質問です。

EXCEL VBAで、グラフの凡例の表示非表示の操作について質問です。

凡例が10あるとします。
 .Legend.LegendEntries(i).Delete
で、i=6~10を削除したとします。

このあとに、上記マクロで削除された凡例を再表示したいのですが、どのようなマクロを書けばよいのでしょうか。
よろしくお願いします。

Aベストアンサー

こんなことでどうでしょうか。
ActiveChart.Legend.Delete
ActiveChart.HasLegend = True

あるいは
ActiveChart.Legend.Delete
ActiveChart.SetElement (msoElementLegendBottom)


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング