Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2599 / 13645 ツリー ←次へ | 前へ→

【66956】エクセルファイルを開く かわかみまめお 10/10/21(木) 12:17 質問[未読]
【66957】Re:エクセルファイルを開く Jaka 10/10/21(木) 12:58 発言[未読]
【66958】Re:エクセルファイルを開く かわかみまめお 10/10/21(木) 13:33 発言[未読]
【66959】Re:エクセルファイルを開く Jaka 10/10/21(木) 13:54 発言[未読]
【66960】Re:エクセルファイルを開く Jaka 10/10/21(木) 14:03 発言[未読]
【66964】Re:エクセルファイルを開く かわかみまめお 10/10/21(木) 16:56 お礼[未読]
【66963】Re:エクセルファイルを開く かわかみまめお 10/10/21(木) 16:50 お礼[未読]
【66961】Re:エクセルファイルを開く UO3 10/10/21(木) 14:05 発言[未読]
【66965】Re:エクセルファイルを開く かわかみまめお 10/10/21(木) 17:13 お礼[未読]
【66967】Re:エクセルファイルを開く かわかみまめお 10/10/21(木) 21:02 質問[未読]
【66972】Re:エクセルファイルを開く ponpon 10/10/21(木) 22:38 発言[未読]
【66974】Re:エクセルファイルを開く かわかみまめお 10/10/22(金) 1:25 お礼[未読]

【66956】エクセルファイルを開く
質問  かわかみまめお  - 10/10/21(木) 12:17 -

引用なし
パスワード
   下記行うこと考えております。

(やりたいこと)
・AAAA.xlsファイルを用意し、AAAA.xls の中のセルに記載されたファイル名を、自動的に開く、ということをやりたいを思っています。


具体的には下記になります。

AAAA..xlsのsheet1の セル”D5”から下の行に向かって、30個程ファイル名を事前に記載しておきます。
そのうち、開きたいファイル名があれば、それぞれの左横のセル(列C)に、”TRUE”とインプットします。

マクロを実行すると、自動的に、
1.”TRUE”のファイルを一つ開く、そのファイルに対して、ある操作を行い(自動)、保存して閉じる。
2.以降の行で”TRUE”対象のファイルを開き、ある操作を行い(自動)、保存して閉じる。
3.以降、TRUEがなくなるまで繰り返す。

(困っていること)
TRUEのファイルを開く為に、下記、記載しましたが、最初のTRUEのファイルを開くことすら出来ません。

ついては、ファイルの開き方を御教示頂けないでしょうか。

ファイル名を文字列で指定する場合はできるのですが、今回は、行ごとにファイルの名称が異なるので、変数を使いました。
(開いた後はループ処理をします。)
***************************************:

Sub 月額定額請求書()
 
  Dim myfilename As String 'ファイル名は文字列
 

  Range("C5").Select


   If ActiveCell.Value = "True" Then
  
    myfilename = ActiveCell.Offset(0, 1).Value
   
      
     Workbooks.Open Filename:=myfilename
    
   End If

End Sub

*****************************************

どうぞ、宜しくお願い致します。

【66957】Re:エクセルファイルを開く
発言  Jaka  - 10/10/21(木) 12:58 -

引用なし
パスワード
   ▼かわかみまめお さん:
>1.”TRUE”のファイルを一つ開く、
TRUEって、どうやってセルに書いているのかよく解りません。
文字列じゃないなら、こんな感じで比較します。

Range("a1").Value = True 'TRUEを入書き込む。以下比較。

If Range("a1").Value = True Then
  MsgBox "TRUE"
Else
  MsgBox "TRUE以外"
End If

【66958】Re:エクセルファイルを開く
発言  かわかみまめお  - 10/10/21(木) 13:33 -

引用なし
パスワード
   ▼Jaka さん:

早速の御教示ありがとうございます。

TRUEってどうやってかいているのか、、、という点ですが、下記のようにしておりました。

*********************************
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True
  If Target.Value = "" Then
    Target.Value = "レ"
  Else
    Target.Value = ""
  End If
End Sub

********************************

開きたいファイルのB列のセルをダブルクリックすると”レ”点が入り(チェックマークのつもりです)、さらにその右隣のC列のセルTRUEとインプットされる。
TRUEが入った行の列Dに記載あるファイルを開ける。

というステップで考えておりました。

レ点が入ったものは、きちんと列CにTRUEが入るところまではきちんと動いてくれたのですが、そこからファイルを開く動作がうまくいかないです。。。。


>▼かわかみまめお さん:
>>1.”TRUE”のファイルを一つ開く、
>TRUEって、どうやってセルに書いているのかよく解りません。
>文字列じゃないなら、こんな感じで比較します。
>
>Range("a1").Value = True 'TRUEを入書き込む。以下比較。
>
>If Range("a1").Value = True Then
>  MsgBox "TRUE"
>Else
>  MsgBox "TRUE以外"
>End If

【66959】Re:エクセルファイルを開く
発言  Jaka  - 10/10/21(木) 13:54 -

引用なし
パスワード
   ▼かわかみまめお さん:
>TRUEってどうやってかいているのか、、、という点ですが、下記のようにしておりました。
>
>*********************************
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>
>Cancel = True
>  If Target.Value = "" Then
>    Target.Value = "レ"
>  Else
>    Target.Value = ""
>  End If
>End Sub
>
>********************************
>
>開きたいファイルのB列のセルをダブルクリックすると”レ”点が入り(チェックマークのつもりです)、さらにその右隣のC列のセルTRUEとインプットされる。
>TRUEが入った行の列Dに記載あるファイルを開ける。

ですから、どうやって「C列のセルTRUEとインプットされる」ようにしているのですかって事です。
まあ、"レ"の内容で判定させればいいので、あまり重要でないかもしれないけど。

「myfilename」の変数に何を入れていますか?
ファイルを開くには、特別な場所もしくは、特定な時以外はファイル名だけだと開きません。
フルパスファイル名を入れてください。

【66960】Re:エクセルファイルを開く
発言  Jaka  - 10/10/21(木) 14:03 -

引用なし
パスワード
   ループが解らないって事なのでしょうか?
そのまえに1つも開く事ができないって事の方が重大だと思ってます。

For i = 5 To 30
  If Cells(i, "C").Value = True Then
   Workbooks.Open Cells(i, "D").Value
  Next
Next

【66961】Re:エクセルファイルを開く
発言  UO3  - 10/10/21(木) 14:05 -

引用なし
パスワード
   ▼かわかみまめお さん:

こんにちは

D列に記載されているブック名は、もちろん【ブックのフルパス】ですよね。
これが、仮にブック名だけ(Book1.xls 等)なら、だめですから。

それと、レ を記入して識別しようとしておられるのですから
"True" との比較ではだめですよね。 "レ" との比較をどうぞ。

それはそれとして、D5から下にファイル名が記載されているということですが
(つまり "レ" は C5以降に必要なだけ記載されている)
アップされたコードは、C5 固定ですね。実際には違うコードで処理しているのですか?

また、C5を扱うにしても わざわざ Select とやって ActiveCell で受ける方式は
感心しませんね。

【66963】Re:エクセルファイルを開く
お礼  かわかみまめお  - 10/10/21(木) 16:50 -

引用なし
パスワード
   ▼Jaka さん:

ありがとうございます。
失礼いたしました。質問の答えになっておりませんでした。

C列には、通常のワークシート関数、
 =IF(B5="レ",TRUE,FALSE)
とインプットしています。

この後、UO3さんからも御教示頂いているように”レ点との比較”ということを考えますと、無駄なことをしているのでは、と気付きました。

なお、「myfilename」の変数に何を入れていますか?

ということについてですが、D列に記載しているのは、『XXXX会社請求書.xls』のみで、フルパスファイル名 にしていませんでした。


>▼かわかみまめお さん:
>>TRUEってどうやってかいているのか、、、という点ですが、下記のようにしておりました。
>>
>>*********************************
>>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>>
>>Cancel = True
>>  If Target.Value = "" Then
>>    Target.Value = "レ"
>>  Else
>>    Target.Value = ""
>>  End If
>>End Sub
>>
>>********************************
>>
>>開きたいファイルのB列のセルをダブルクリックすると”レ”点が入り(チェックマークのつもりです)、さらにその右隣のC列のセルTRUEとインプットされる。
>>TRUEが入った行の列Dに記載あるファイルを開ける。
>
>ですから、どうやって「C列のセルTRUEとインプットされる」ようにしているのですかって事です。
>まあ、"レ"の内容で判定させればいいので、あまり重要でないかもしれないけど。
>
>「myfilename」の変数に何を入れていますか?
>ファイルを開くには、特別な場所もしくは、特定な時以外はファイル名だけだと開きません。
>フルパスファイル名を入れてください。

【66964】Re:エクセルファイルを開く
お礼  かわかみまめお  - 10/10/21(木) 16:56 -

引用なし
パスワード
   ▼Jaka さん:

お忙しいところ、ありがとうございます。

自分でもファイルさえ開けないということが問題と思い、今回質問させていただきました。

ループに関しては、以前やったことがありますので、なんとか頑張ろう、とは思っておりましたが、下記御教示頂きありがとうございました。

参考にさせていただきます。


>ループが解らないって事なのでしょうか?
>そのまえに1つも開く事ができないって事の方が重大だと思ってます。
>
>For i = 5 To 30
>  If Cells(i, "C").Value = True Then
>   Workbooks.Open Cells(i, "D").Value
>  Next
>Next

【66965】Re:エクセルファイルを開く
お礼  かわかみまめお  - 10/10/21(木) 17:13 -

引用なし
パスワード
   ▼UO3 さん:

ありがとうございます。

JAKAさんからも御指摘頂いていただきましたが、やはりフルパスでなければだめなのですね。

実は、昨日ひょんなことからフルパスいれずに試したら目的のファイルが開いたので、大丈夫なのかも?と思っておりました。その後、PCがたまたまフリーズして、保存できないまま、再度同じことを記載した(つもり)ら出来なかったので、
何がおかしいのだろうと、悩んでおった次第です。

パス名入れて頑張ってみます。

>アップされたコードは、C5 固定ですね。実際には違うコードで処理しているのですか?

本当のエクセルシート上でも、C5が開きたいリストの一番上の行でして、固定させます。実際もこのままのコードを使うつもりです。

また、C5を扱うにしても わざわざ Select とやって ActiveCell で受ける方式は感心しませんね。

ありがとうございます。勉強になります。


>▼かわかみまめお さん:
>
>こんにちは
>
>D列に記載されているブック名は、もちろん【ブックのフルパス】ですよね。
>これが、仮にブック名だけ(Book1.xls 等)なら、だめですから。
>
>それと、レ を記入して識別しようとしておられるのですから
>"True" との比較ではだめですよね。 "レ" との比較をどうぞ。
>
>それはそれとして、D5から下にファイル名が記載されているということですが
>(つまり "レ" は C5以降に必要なだけ記載されている)
>アップされたコードは、C5 固定ですね。実際には違うコードで処理しているのですか?
>
>また、C5を扱うにしても わざわざ Select とやって ActiveCell で受ける方式は
>感心しませんね。

【66967】Re:エクセルファイルを開く
質問  かわかみまめお  - 10/10/21(木) 21:02 -

引用なし
パスワード
   JAKA様、UO3様

この度は御教示ありがとうございます。

お二方のアドバイスを参考に下記トライしましたが、うまくいきませんでした。

大変恐縮ですが、再度、御教示頂けませんでしょうか。

1."B5”のセルは、ダブルクリックしたらレ点が入るようにしてあります。
2.お二人のアドバイスに基づき、TRUEをワークシート関数で入れる"C5"セルは無視することにして、"レ点があれば、セル"D5"に記載のファイルを開ける。
ようにしたいです。

どうしても、
myfilename = Selection.Offset(0, 2).Value
において、myfilename にうまく、ファイルの名前が格納されないようです。

なお、フルパスですが、myfilename の部分に直接D5のファイル名を記載してみたところ、ファイルは開いたので、パスに間違いはないと思っています。

ちなみに、"D5"セルには、"請求書●●株式会社.xls"とインプットしてあります。


*********************************

Sub 月額定額請求書()
 
Dim myfilename As String 'ファイル名は文字列
 

  Range("B5").Select
   
   If Selection.Value = "レ" Then
   
     myfilename = Selection.Offset(0, 2).Value
       
     Workbooks.Open Filename:="C:\Documents and    Settings\Administrator\My Documents\引継\月額請求書マクロ\myfilename"
    
   End If

End Sub

********************************************


>▼UO3 さん:
>
>ありがとうございます。
>
>JAKAさんからも御指摘頂いていただきましたが、やはりフルパスでなければだめなのですね。
>
>実は、昨日ひょんなことからフルパスいれずに試したら目的のファイルが開いたので、大丈夫なのかも?と思っておりました。その後、PCがたまたまフリーズして、保存できないまま、再度同じことを記載した(つもり)ら出来なかったので、
>何がおかしいのだろうと、悩んでおった次第です。
>
>パス名入れて頑張ってみます。
>
>>アップされたコードは、C5 固定ですね。実際には違うコードで処理しているのですか?
>
>本当のエクセルシート上でも、C5が開きたいリストの一番上の行でして、固定させます。実際もこのままのコードを使うつもりです。
>
>また、C5を扱うにしても わざわざ Select とやって ActiveCell で受ける方式は感心しませんね。
>
>ありがとうございます。勉強になります。
>
>
>>▼かわかみまめお さん:
>>
>>こんにちは
>>
>>D列に記載されているブック名は、もちろん【ブックのフルパス】ですよね。
>>これが、仮にブック名だけ(Book1.xls 等)なら、だめですから。
>>
>>それと、レ を記入して識別しようとしておられるのですから
>>"True" との比較ではだめですよね。 "レ" との比較をどうぞ。
>>
>>それはそれとして、D5から下にファイル名が記載されているということですが
>>(つまり "レ" は C5以降に必要なだけ記載されている)
>>アップされたコードは、C5 固定ですね。実際には違うコードで処理しているのですか?
>>
>>また、C5を扱うにしても わざわざ Select とやって ActiveCell で受ける方式は
>>感心しませんね。

【66972】Re:エクセルファイルを開く
発言  ponpon  - 10/10/21(木) 22:38 -

引用なし
パスワード
   >Workbooks.Open Filename:="C:\Documents and    Settings\Administrator\My Documents\引継\月額請求書マクロ\myfilename"

がまずいですね。

" "で囲むと文字列になります。
myfilenameは変数だから

Workbooks.Open Filename:="C:\Documents and    Settings\Administrator\My Documents\引継\月額請求書マクロ\" & myfilename

でどうでしょう?

【66974】Re:エクセルファイルを開く
お礼  かわかみまめお  - 10/10/22(金) 1:25 -

引用なし
パスワード
   ▼ponpon さん:

こんばんは。
ありがとうございました!
ファイル開くことが出来ました。

myfilenameをstringで宣言したので、てっきりそのまま文字列扱いとして””の中に入れてよいものと思っておりました。
勉強になりました。

どうも有難うございました。
助かりました。


>>Workbooks.Open Filename:="C:\Documents and    Settings\Administrator\My Documents\引継\月額請求書マクロ\myfilename"
>
>がまずいですね。
>
>" "で囲むと文字列になります。
>myfilenameは変数だから
>
>Workbooks.Open Filename:="C:\Documents and    Settings\Administrator\My Documents\引継\月額請求書マクロ\" & myfilename
>
>でどうでしょう?

2599 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free