いつもありがとうございます。

エクセルVBAにて、「同一フォルダ内にある別ファイルの値を、『そのファイルを開かずに』
コピーする」やり方をいろいろ調べているのですが、なかなか思うようにいきません。

現状、こんな感じです。

-----------------------------------------------------------------------

  For i = 4 To 2000

Sheets(Lm).Cells(i, 14).FormulaR1C1 = "='[" & Base & ".xls]" & St & "'!RC[24]"

Next i

※変数"Base"には参照したいファイル名、"St"及び"Lm"にはシート名が入っています

-----------------------------------------------------------------------

 これで行いたい処理はできているのですが、2000行近くあるため、職場の低CPUな
PCでは処理に時間がかかってしまいます。

 これを、(たとえばcopyメソッドなどを使って?)もっと速く処理できる方法はないでしょうか?

 以上、ご教示のほど、よろしくお願いいたします。

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

A 回答 (3件)

sub macro1()


worksheets(Lm).range("N4:N2000").formulaR1C1 = "='c:\フォルダ\[" & base & ".xls] & st & "'!RC[24]"
end sub

などのようにしてみます。
少なくともセルを一個一個嘗め回してその都度外部参照させるようなマクロにしない工夫をしてみると,改善があるかもしれません。
高速化が目的なら,きちんと開いてシンプルにコピーしてきた方がずっと早い事も十分考えられます。実際にマクロを組んで,実験してみて事実を確認してみてください。

またセルを一度に2000個も本当に参照する必要があるのか?といった部分はどうなんでしょうか。



#ご質問に掲示された今のマクロは「閉じたブックを参照する」になっていませんが,てきとーに削って掲示したせいかもしれません?
#閉じたCSVに対して外部参照式で値を取ってこさせる方法はありません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
上手くいきました。

あとは、「きちんと開いてシンプルにコピー」とどちらが速いかなど
いろいろ実験してみます。

あるがとうございました。

お礼日時:2011/04/24 10:41

No2の方もおっしゃるように


バックグラウンドでファイル内のデータをひっぱて来ることは可能ですが
この方法はメモリが少ないPCでは逆に遅くなることもあります。

ファイルを開かずに値を持ってくることは不可能です。
2000ものファイルをどの頻度で操作するのでしょうか?
データが多くのファイルに分散してしまう運用を見直したほうが良いです。
一般的な発想ですが
それぞれのファイルでデータを操作したら、その内容を
データベースに蓄積される
集計の際は、データベースから必要な部分を取り出して処理する。
といったことを考えます。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございました。

お礼日時:2011/04/24 10:05

VBAとかEXCELの詳しい使い方は知りませんが…


コンピューター処理の常識で考えると
一つはシートの保存場所を、HDDではなく
RAMディスクやSSDにおくことが効果的じゃないかと思います。

それが予算的にできないのであれば
シートをCSV形式に変換して保存するといった方法で
まったく違う手段でアクセスするほうが高速かもしれません。

一度、その処理中にタスクマネージャーでモニタリングして
CPU負荷とHDDアクセスとメモリー消費などの推移から
速度低下の原因を特定すべきかもしれません。

たとえば最初のアプローチはHDD待ちを解消するもので
後のアプローチは、メモリー消費とCPU負荷に効果があるかもしれません。

ただ、VBAからEXCELのシートをアクセスするより
CSVファイルへのアクセスのほうが、難しいかもしれません。
また必ず高速化できるとも言えません。
(VBAのEXCELシート参照機能が充分に最適化されている場合など)
    • good
    • 0
この回答へのお礼

まったく違う視点からのご回答、ありがとうございました。

お礼日時:2011/04/24 10:01

この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 EXCEL 開かずにデータ操作

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

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が使用できるのかと思いますが、出来ません。
ご指導よろしくお願いします。

Aベストアンサー

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などは利用できますが、意外に面倒かもしれません。フィールドがなくても取得できます。

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)という意味でしたら、[外部データの取り込み]から操作します。ただし、その使用する列全体を使用してしまいますので、取り込み...続きを読む

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

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

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

Aベストアンサー

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

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

QVBAによるカレントフォルダのファイルを検索し開く

カレントフォルダ内にファイル(コ―ド.xls)を見つけ開き、無ければMSG表示したい。
どのように、したらいいですか?

考えているのは、
Application.DefaultFilePath = ThisWorkbook.Path
If ??? Then
Workbooks.Open "コード.xls"
else
msgbox (ThisWorkbook.Path & "にコード.xlsを置いて下さい。")
Exit sub
end If
です。
この???の部分を教えて頂きたいと思います。
よろしくお願いします。

Aベストアンサー

Dir("コード.xls") <> ""

これでいかがでしょう。

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

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

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

QVBA 別ファイルの空白行を探す

すみません、よろしくお願いいたします。

<前提>
Aファイル・・貼り付け元(マクロを組み込んでいるのはこちら)
xファイル・・貼り付け先(ファイル名が一定ではない・シートは1つでシート名は固定)

<質問内容>
Aファイル、xファイルともに開き、
AファイルのデータをxファイルのA:B列(結合している)の空白行へ
貼り付けという作業をしたいと思っています。

xファイルの名前がかわってしまうので、
どちらのファイルも開いていて、
この二つのファイル以外は開いていないという前提で、
Windows(2).Activate
でxファイルを指定するところまではできたのですが、
(教えてgooで教えていただきました)
xファイルのA:B列の空白行を探して貼り付けというのを
どうVBAで記述したらいいのかわかりません。

すみませんが、わかるかたお願いいたします。

Aベストアンサー

こんばんは。

作ってみたところ、一箇所見えていない部分がありました。

貼り付け先のA:Bが、連結しているということですから、
コピー元のシートのRange("B6:L" & RowNum02)  B6:C6 が、連結していないと、エラーが発生してしまいます。
それに対処する方法はまだ考えていません。

まだ、テスト段階ですから、うまくいかないかもしれません。とりあえず、試験してみてください。

'-------------------------------------------------------------------------
'=========================================
'***** ユーザー設定 *****
Private Const PSW As String = "password1234" 'パスワード
Private Const mCOMPANY As String = "株式会社AAA" '会社名
Private Const mFILENAME As String = "20*" '先頭に20が付くファイル
'=========================================
Sub CopyProTest3()
  Dim DataNum01 As Long
  Dim RowNum02 As Long
  Dim CopyRange09 As Range
  '-------------------------------------------
  Dim wb As Object
  Dim i As Long
  Dim dstWb As Workbook
  
  For Each wb In Workbooks
    If wb.Name Like mFILENAME Then
      Set dstWb = wb
      i = i + 1
    End If
  Next
  If i = 0 Then
    MsgBox "該当ブックが開いていません。", vbInformation, mCOMPANY
    Exit Sub
  ElseIf i = 1 Then
    If MsgBox("貼り付け先のファイルを開いていますか?よければOKボタンで実行してください。", vbOKCancel, "株式会社AAA") = vbNo Then
      MsgBox "キャンセルしました!!", vbInformation, mCOMPANY
      Exit Sub
    End If
  ElseIf i > 1 Then
    MsgBox "該当ブックが2つ以上開いています。", vbInformation, mCOMPANY
    Exit Sub
  End If
  '-------------------------------------------
  With ThisWorkbook.ActiveSheet
    .Unprotect Password:=PSW
    .Protect Password:=PSW, UserInterfaceOnly:=True
    
    'P2には入力のデータの件数が表示されるようにしてます。
    DataNum01 = .Range("P2").Value
    '何行目までデータが入力されているか表示されています。1つ目のデータはA6からL6まで入力するのですが、2つデータが入っていたら、7行目になるのでここには7と数字が表示されます。
    RowNum02 = Val(.Range("O2").Value) '数値認識させる
    
    If RowNum02 <= 5 Then
      MsgBox "入力されていません。処理を中止します。", vbInformation + vbOKOnly, mCOMPANY
      Exit Sub
    End If
    'データが数式のため、貼り付け先ファイルの都合上、いったんこのファイル上で、値としてコピーしております。
    '.Range("D6:M81").Value = .Range("D6:M81").Value
    
    .Range("B2").Value = "確定済"
    .Range("P2").Value = 1
    'コピーするのはB6~L列の入力されている行までです。
    Set CopyRange09 = .Range("B6:L" & RowNum02)
  End With
  
  On Error Resume Next
  With dstWb.Worksheets(1)
    CopyRange09.Copy
    .Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    Application.Goto .Cells(Rows.Count, 1).End(xlUp).Offset(1)
  Set CopyRange09 = Nothing
  If Err.Number > 0 Then
    MsgBox Err.Number & ": " & Err.Description, vbExclamation
  End If
  End With
  On Error GoTo 0
End Sub

'-------------------------------------------

こんばんは。

作ってみたところ、一箇所見えていない部分がありました。

貼り付け先のA:Bが、連結しているということですから、
コピー元のシートのRange("B6:L" & RowNum02)  B6:C6 が、連結していないと、エラーが発生してしまいます。
それに対処する方法はまだ考えていません。

まだ、テスト段階ですから、うまくいかないかもしれません。とりあえず、試験してみてください。

'-------------------------------------------------------------------------
'===============================...続きを読む

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 集計結果を別ファイルに表示

元データファイルに下記のような一覧があります。
この元データをもとに、新しく開いたファイルに集計結果の一覧を作成するマクロで悩んでいます。
(ずれていて見づらくてすいません。)

<元データ>
A B C D E
日付 都道府県名 区分1 区分2 内容
2008/6/22 北海道 ア あ あああ
2008/10/3 鹿児島 エ う ううう
2009/6/22 和歌山 イ え えええ
2010/6/22 千葉 ア う ううう
2011/1/20 大阪 イ お おおえ
2011/4/15 北海道 オ い いいい
2011/8/3 大阪 イ い いあい

上から日付順で並んでいるだけです。
これを都道府県名、区分2、月、内容を選択して、選択した条件を縦軸に横軸は常に区分1でカウントした結果を新しく開いたファイルのシートに下記のような一覧で表示します。

<集計結果>
◎都道府県別の場合
A B C D E
都道府県名 ア イ ウ エ オ
北海道 1 0 0 0 1

千葉 1 0 0 0 0

大阪 0 2 0 0 0

和歌山 0 1 0 0 0

鹿児島 0 0 0 1 0

◎内容別の場合
A B C D E
内容 ア イ ウ エ オ
あああ 1 0 0 0 0
いいい 0 0 0 0 1
ううう 1 0 0 1 0
えええ 0 1 0 0 0
おおえ 0 1 0 0 0
いあい 0 1 0 0 0

※元データは日付以外はバラバラの順番です。その中から、例えば内容別の場合は全ての内容の種類分の個数(さらに区分1でわける)が必要になります。
※内容や、都道府県の順番は一定の規則の元並べたいのですが、コード上でできなければ、[データ]-[並び替え]のオプションを使用しなければならないかなと思っております。(できればこれもコードに組み込めたらと思っています。)
※上記の集計後の一覧は日付を全て集計の対象にしていますが、実際は2008年~2010年や2009年のみといったように対象を絞って集計をする予定です。

考えれば考えるほどに複雑になってきて悩んでいるのですが、こういったことをするコードはvbaで可能でしょうか。またそれができるサンプルコードや方法、参考になるものがあったら教えてください。

元データファイルに下記のような一覧があります。
この元データをもとに、新しく開いたファイルに集計結果の一覧を作成するマクロで悩んでいます。
(ずれていて見づらくてすいません。)

<元データ>
A B C D E
日付 都道府県名 区分1 区分2 内容
2008/6/22 北海道 ア あ あああ
2008/10/3 鹿児島 エ う ううう
2009/6/22 和歌山 イ え えええ
2010/6/22 千葉 ア う ううう
2011/1/20 大阪 イ お おおえ
2011/4/15 北海道 オ い いいい
2011/8/3 大阪 イ い いあい

上から日付順で並んでいるだけです。
これを...続きを読む

Aベストアンサー

初歩的なマクロは作成できるレベルと見て考え方だけ回答します。

要はデータリストの区分1の内容別にカウントアップすればいいわけですね?
であれば、
1)データリストのシートとは別に記入用シートを必要数作っておいて
2)マクロでリストの上から下までを順次読み込んで
3)記入用シートに一致する行があるか確認して
4)一致する内容が既に登録されていなれば新規追加、一致内容があればそこをカウントアップ
とすれば目的が達成できそうですね。

スマートとは言えないかもしれませんが、これなら繰り返し処理と条件分岐を知っていれば対応できますので、さほどマクロの知識も必要ないでしょう(^^;


都道府県の処理を例に説明すると、
(1)データシートとは別に「都道府県」シート(なんならbook分けてもいいですが)を作る。
 A列に都道府県名、B列以下を区分1内容としていくわけですが、最初は空っぽでも良い。
(2)データリストの上からスタートして、B列(県名)とC列(区分1)のセルの値を読み込む
 例:4行目を処理しているときは、(2)で読み込んだB4セルの値は「和歌山」、C4セルの値は「イ」になりますね。
(3)「都道府県」シートのA列(都道府県名)の上から順に(3)で得たB列の値と比較していく。
 例では「和歌山」の一致行がなくて””(空白)に行きつくから、その行A列に(3)で得た値「和歌山」を書き込みます。
(4)今度はA列を右に検索していって、(3)で得た「イ」と一致するか比較する。
 例では「イ」も初出になりますから、既にあるアとエの横に新たに「イ」を書き込みます。
(5)(3)で得た対象の行と、(4)で得た対象の列が交差するセルの値を+1する。
 例ではD4セルを+1することになります。
 |    A    | B | C | D | E | F | …
1| 都道府県名 | ア | エ | イ |   |   |
2| 北海道    | 1 |   |   |   |   |
3| 鹿児島    |   | 1 |   |   |   |
4| 和歌山    |   |   | 1 |   |   |
(6)以下、データリストの一番下の行まで繰り返し、データの各行の値をいちいち出力用リストの値と比較して、該当するセルを1つインクリメントしる、という流れです。

(2)の段階で他の区分2や内容も読み込んでおいて、(3)と同様にそれぞれのシ―トでの対象行を探せばあとは同じですし、予め記入用のシートにタイトル(都道府県名や区分1の項目)を記入しておいて、データシートの2行目から処理を開始してやれば、区分1の並びも都道府県の並びも好きな初期設定で出力できます。

日付を絞るなら(2)の前にどこかのセルやinputboxで日付の上限下限を入力させておいて、(2)の処理時に範囲内のデータでなければその行をスキップして次の行に移ればいいでしょう。

マクロ走らせるたびにカウントは積み上げられていきますので、実際はマクロの最初に出力用シートの記入済み値を消すって操作を入れておいたほうがいいでしょうね。

初歩的なマクロは作成できるレベルと見て考え方だけ回答します。

要はデータリストの区分1の内容別にカウントアップすればいいわけですね?
であれば、
1)データリストのシートとは別に記入用シートを必要数作っておいて
2)マクロでリストの上から下までを順次読み込んで
3)記入用シートに一致する行があるか確認して
4)一致する内容が既に登録されていなれば新規追加、一致内容があればそこをカウントアップ
とすれば目的が達成できそうですね。

スマートとは言えないかもしれませんが、これなら繰り...続きを読む

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

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

QVBA 1フォルダーの中の該当するファイルを開く

OS : WindowsXP
Excel : 2003


一つのフォルダーの中に複数のExcelファイルがあります。
その複数のファイルの中から該当するものだけを開くようなマクロの書き方を教えてください。

例えば、
ひとつのフォルダーの中に以下のExcelファイルが保存されています。

C:\営業部\営業2課\売上\2011/11/28.xls
C:\営業部\営業2課\売上\2011/11/29.xls
C:\営業部\営業2課\売上\2011/11/30.xls
C:\営業部\営業2課\売上\2011/12/01.xls
C:\営業部\営業2課\売上\2011/12/02.xls
C:\営業部\営業2課\売上\2011/12/05.xls
C:\営業部\営業2課\売上\2011/12/06.xls
C:\営業部\営業2課\売上\2011/12/07.xls
C:\営業部\営業2課\売上\2011/12/08.xls
C:\営業部\営業2課\売上\2011/12/09.xls
C:\営業部\営業2課\売上\2011/12/12.xls
C:\営業部\営業2課\売上\2011/12/13.xls
C:\営業部\営業2課\売上\2011/12/14.xls
C:\営業部\営業2課\売上\2011/12/15.xls
C:\営業部\営業2課\売上\2011/12/16.xls
C:\営業部\営業2課\売上\2011/12/19.xls
C:\営業部\営業2課\売上\2011/12/20.xls
C:\営業部\営業2課\売上\2011/12/21.xls
C:\営業部\営業2課\売上\2011/12/22.xls
C:\営業部\営業2課\売上\2011/12/23.xls
C:\営業部\営業2課\売上\2011/12/26.xls
C:\営業部\営業2課\売上\2011/12/27.xls
C:\営業部\営業2課\売上\2011/12/28.xls
C:\営業部\営業2課\売上\2011/12/29.xls
C:\営業部\営業2課\売上\2011/12/30.xls
C:\営業部\営業2課\売上\2012/01/04.xls
C:\営業部\営業2課\売上\2012/01/05.xls

上記ファイル名の数字は日付を表しています。
その中から2011年12月のファイルを全て開くマクロを組みたい。
また、月次処理で使用するため、翌月には2012年1月のファイルを開きます。


どなたか、よろしくお願いします。

OS : WindowsXP
Excel : 2003


一つのフォルダーの中に複数のExcelファイルがあります。
その複数のファイルの中から該当するものだけを開くようなマクロの書き方を教えてください。

例えば、
ひとつのフォルダーの中に以下のExcelファイルが保存されています。

C:\営業部\営業2課\売上\2011/11/28.xls
C:\営業部\営業2課\売上\2011/11/29.xls
C:\営業部\営業2課\売上\2011/11/30.xls
C:\営業部\営業2課\売上\2011/12/01.xls
C:\営業部\営業2課\売上\2011/12/02.xls
C:\営業部\営業2課\売上\2011/12/05.xls
C...続きを読む

Aベストアンサー

VBAのヘルプでdir関数の使用例辺りを参考にしてみると,殆どそのままツカエル,サンプルマクロが載ってます。

でもヤリタイ事の具体的な詳細が詰まってないと,またすぐに躓きます。
たとえば
「今月」のブックを処理したい?
「先月」のブックを処理したい?
それとも「何年何月」とイチイチ入力して処理したい?
開いた後ナニをしたい?
(いや,勿論ファイルさえ開ければ,あとは万全という事でご質問になってないのだと信じますが)



適宜応用して下さい:
sub macro1()
 dim myPath as string
 dim myFile as string
 dim n as long
 mypath = "C:\営業部\営業2課\売上\"

 myfile = dir(mypath & format(date, "yyyy/mm") & "*.xls")
 do until myfile = ""
  workbooks.open mypath & myfile
  n = n + 1
  thisworkbooks.worksheets(1).cells(n, "A") = workbooks(myfile).worksheets(1).range("A1")
  workbooks(myfile).close false
  myfile = dir()
 loop
end sub



#別のアプローチ
sub macro2()
 dim w as workbook
 dim d as integer
 dim s as string
 on error resume next

 s = "2011/12/"
 for d = 1 to 31
 set w = workbooks.open("C:\営業部\営業2課\売上\" & s & format(d, "00") & ".xls")
 next d
end sub

VBAのヘルプでdir関数の使用例辺りを参考にしてみると,殆どそのままツカエル,サンプルマクロが載ってます。

でもヤリタイ事の具体的な詳細が詰まってないと,またすぐに躓きます。
たとえば
「今月」のブックを処理したい?
「先月」のブックを処理したい?
それとも「何年何月」とイチイチ入力して処理したい?
開いた後ナニをしたい?
(いや,勿論ファイルさえ開ければ,あとは万全という事でご質問になってないのだと信じますが)



適宜応用して下さい:
sub macro1()
 dim myPath as string
 dim myFi...続きを読む


人気Q&Aランキング

おすすめ情報