Excel VBA質問箱 IV

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

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


12302 / 13646 ツリー ←次へ | 前へ→

【11172】ファイルの状態によって制御を分けたいのですが... はるか 04/3/2(火) 10:48 質問
【11175】Re:ファイルの状態によって制御を分けたい... IROC 04/3/2(火) 11:29 回答
【11177】Re:ファイルの状態によって制御を分けたい... Jaka 04/3/2(火) 11:43 回答
【11190】Re:ファイルの状態によって制御を分けたい... はるか 04/3/2(火) 13:38 お礼
【11220】パッチの\を忘れていました。 Jaka 04/3/3(水) 9:08 発言
【11224】Re:パッチの\を忘れていました。 はるか 04/3/3(水) 11:56 質問
【11230】Re:パッチの\を忘れていました。 Jaka 04/3/3(水) 13:44 回答
【11235】ごめんなさい。 Jaka 04/3/3(水) 14:40 回答
【11240】Re:ごめんなさい。 はるか 04/3/3(水) 17:10 お礼

【11172】ファイルの状態によって制御を分けたいの...
質問  はるか  - 04/3/2(火) 10:48 -

引用なし
パスワード
   現在、「一覧表.xls」で作業しているのですが、
ActiveWorkbook.Pathの”一覧表.xls”が、
 開いている場合・・・ActiveSheetにして作業続行
 閉じている場合・・・開く
 存在しない場合・・・作成する
と、処理を分けたいと思っています。FreeFile関数などを使えばいいのかな、
とも思ったのですがうまくいきません。どなたかご教授下さい。
宜しくお願いいたします。

【11175】Re:ファイルの状態によって制御を分けた...
回答  IROC  - 04/3/2(火) 11:29 -

引用なし
パスワード
   >現在、「一覧表.xls」で作業しているのですが、

であれば

>ActiveWorkbook.Pathの”一覧表.xls”が、
> 開いている場合・・・ActiveSheetにして作業続行

の状況しかあり得ないのでは?

【11177】Re:ファイルの状態によって制御を分けた...
回答  Jaka  - 04/3/2(火) 11:43 -

引用なし
パスワード
   こんにちは。

Sub jaja()
  Dim WBpath As String, ACBK As Workbook, DMBK As Workbook
  Set ACBK = ActiveWorkbook
  WBpath = ActiveWorkbook.Path
  If Dir(WBpath & "一覧表.xls") = "" Then
    Workbooks.Add.SaveAs WBpath & "一覧表.xls"
  Else
    On Error Resume Next
    Set DMBK = Workbooks("一覧表.xls")
    Set DMBK = Nothing
    If Err Then
     Workbooks.Open (WBpath & "一覧表.xls")
     Err.Clear
    End If
  End If
  ACBK.Activate
  Set ACBK = Nothing
End Sub

【11190】Re:ファイルの状態によって制御を分けた...
お礼  はるか  - 04/3/2(火) 13:38 -

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

ご丁寧にありがとうございました。
おかげさまで出来ました。

【11220】パッチの\を忘れていました。
発言  Jaka  - 04/3/3(水) 9:08 -

引用なし
パスワード
   すみませんでした。

WBpath = ActiveWorkbook.Path
   ↓
WBpath = ActiveWorkbook.Path & "\"

【11224】Re:パッチの\を忘れていました。
質問  はるか  - 04/3/3(水) 11:56 -

引用なし
パスワード
   ▼Jaka さん:
ご親切にありがとうございます。”\”は自分で解決済です。
さて、別件になってしまうのですが、以下の問題点も実は
抱えております。テクニックをご存知であればご教授下さい。

今、フォームを作っているのですが、そのフォームには
ComboBox1とComboBox2があります。ComboBox1のファイルは
インポート目的のファイルで、ComboBox2のファイルは実行
のターゲットとするファイルです。ComboBox1は、以下の
ソースにて開くべきファイルを表示させています。
(変数はすべてpublicで宣言しています)

Private Sub UserForm_Initialize()
  
  DirPath = ActiveWorkbook.Path
  DirFile = Dir(System_Path + "\*.xls")
 
  Do While DirFile <> ""
    With ComboBox1
      .AddItem (DirFile)
    End With
    DirFile = Dir()
  Loop
End Sub

そして、ComboBox2にはComboBox1.AddItem (DirFile)のうち、
実際に開かれているもののみを表示したいと思っています。

”開いてそのまま実行”ではちょっと不都合なのでこの形で実行
したいのです。

イベントとしてはUserForm_Initialize()ではなく、CommandButton_Click()で
行おうと思います。何か「Pathで検索されたファイルのうち、開かれたもののみ」
を表示(検出?)する方法ってございますか?

FSOとか調べてみたのですがなかなかヒットしないもので...

すみませんが、宜しくお願いいたします。

【11230】Re:パッチの\を忘れていました。
回答  Jaka  - 04/3/3(水) 13:44 -

引用なし
パスワード
   >開かれたもののみ
を、どう受け取ったら良いのかわかりませんけど、エラートラップじゃダメだったんでしょうか?

他だとこんなかなぁ。

Sub kjkjlkjij()
  Dim dit() As String, OPWb As Workbook
  For Each OPWb In Workbooks
    i = i + 1
    ReDim Preserve dit(1 To i)
    dit(i) = OPWb.Name
  Next
  If Application.Match("ttety.xls", dit, 0) Then
    MsgBox "開いてる。"
  Else
    MsgBox "開いてない"
  End If
  Erase dit
End Sub

良くわかんないけど、これも。
読み取り専用にされているとダメです。

Sub kok()
  With Workbooks.Open(フルパス)
   If .ReadOnly Then
     .Close False
     MsgBox "開かれている。"
   Else
     MsgBox "開かれてない。"
   End If
  End With
End Sub

【11235】ごめんなさい。
回答  Jaka  - 04/3/3(水) 14:40 -

引用なし
パスワード
   >開かれたもののみ
他のパソコンで開いていた場合等も含むのですか?

それと、前のだとエラーになって動きませんでした。
修正版

Sub kjkjlkjij()
  Dim dit() As String, OPWb As Workbook
  For Each OPWb In Workbooks
    i = i + 1
    ReDim Preserve dit(1 To i)
    dit(i) = OPWb.Name
  Next
  If Not IsError(Application.Match("ttety.xls", dit, 0)) Then
    MsgBox "開いてる。"
  Else
    MsgBox "開いてない"
  End If
  Erase dit
End Sub

【11240】Re:ごめんなさい。
お礼  はるか  - 04/3/3(水) 17:10 -

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

本当にご親切にありがとうございました。

うまく出来ました。
教えていただいたものを元にちょっと考えて
別の使い方も試してみようと思います。

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

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