Excel VBA質問箱 IV

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

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


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

【22808】テキストファイルを開く VBA初心者 05/3/3(木) 23:09 質問[未読]
【22809】Re:テキストファイルを開く かみちゃん 05/3/3(木) 23:22 発言[未読]
【22812】Re:テキストファイルを開く G-Luck 05/3/3(木) 23:39 回答[未読]
【22813】Re:テキストファイルを開く かみちゃん 05/3/4(金) 7:27 発言[未読]
【22854】Re:テキストファイルを開く VBA初心者 05/3/5(土) 1:42 質問[未読]
【22859】Re:テキストファイルを開く G-Luck 05/3/5(土) 10:34 回答[未読]
【22874】Re:テキストファイルを開く VBA初心者 05/3/5(土) 13:54 お礼[未読]

【22808】テキストファイルを開く
質問  VBA初心者  - 05/3/3(木) 23:09 -

引用なし
パスワード
   夜分すいません。
ファイル名が「ABC*.xms」というテキストファイルがあって
Dialogで開くとテキストファイルを開くと"ABC*.xms"のファイル名のみ
表示させることが出来るのですが、テキストファイルウィザードで処理する必要があります。
OPENメソッドで開くと"*.xms"の拡張子のみのファイルを表示させることが出来、
テキストファイルウィザードを省略することが出来ますが、

ファイルを開く際にフォルダ内の"ABC*.xms"のみを表示し、テキストファイルウィザードを省略できるマクロって作れますでしょうか?

【22809】Re:テキストファイルを開く
発言  かみちゃん  - 05/3/3(木) 23:22 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>ファイルを開く際にフォルダ内の"ABC*.xms"のみを表示し、テキストファイルウ
>ィザードを省略できるマクロって作れますでしょうか?

「マクロの記録」で、どこまでできていますか?

【22812】Re:テキストファイルを開く
回答  G-Luck  - 05/3/3(木) 23:39 -

引用なし
パスワード
   こんばんは VBA初心者さん、かみちゃん

こんな感じのことでしょうか?

Private Sub myFileOpen()

  Dim Fn As String
  Fn = Application.GetOpenFilename _
    (FileFilter:="特殊テキストファイル(*.xms),*.xms")
  If Fn = "False" Then Exit Sub
  Workbooks.Open Filename:=Fn
  
End Sub

【22813】Re:テキストファイルを開く
発言  かみちゃん  - 05/3/4(金) 7:27 -

引用なし
パスワード
   G-Luck さん、VBA初心者さん、こんにちは。かみちゃん です。

>こんな感じのことでしょうか?

たぶんそういうことだと思います。
ただし、GetOpenFilenameのFileFilterで*.xmsではなく、ABC*.xmsとしたいのだと
思います。
あと、テキストファイルということですので、OpenTextメソッドを使うのでは?と
思っていました。
いずれにせよ、GetOpenFilenameメソッドを使う際に、特定のファイル名で始まる
ものだけ表示したいのと、テキストファイルを開く際にテキストファイルウィザー
ドを表示させたくないということだと思いますので、次のようにすればいいのかな
と思っています。

Sub myFileOpen()

  Dim Fn As String
    
  'IMEモードが「全角入力ひらがなモード」の場合「オフ」にする
  '必要に応じて織り込む
'  If IMEStatus = vbIMEModeHiragana Then
'   SendKeys "{kanji}", False
'   SendKeys "ABC*" & "{TAB}", False
'  Else
   SendKeys "ABC*" & "{TAB}", False
'  End If
  '----
  Fn = Application.GetOpenFilename _
    (FileFilter:="特殊テキストファイル(*.xms),*.xms")
  If Fn = "False" Then Exit Sub
  '↓ マクロの記録より 適宜変更すること
  Workbooks.OpenText Filename:=Fn _
    , Origin:=932, StartRow:= _
    1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True, _
    Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 2)), _
    TrailingMinusNumbers:=True
End Sub

【22854】Re:テキストファイルを開く
質問  VBA初心者  - 05/3/5(土) 1:42 -

引用なし
パスワード
   ▼かみちゃん さん:

遅くなりましたが、回答ありがとうございます。

同じ作業を繰り返したら、ファイル名「ABC*」が表記されたり、されなかったり
しました。あと、ファイル名を入力したら、そのリストに記録されますが、
クリア出来ますでしょうか?

【22859】Re:テキストファイルを開く
回答  G-Luck  - 05/3/5(土) 10:34 -

引用なし
パスワード
   ▼VBA初心者 さん:
かみちゃん こんにちは
SendKey 知りませんでした。すばらしい

さて、VBA初心者 さん
SendKeyはアクティブなウィンドウに返すようです(Helpより)。
つまり、myFileOpenを呼び出した時、たいしょうのExcelがアクティブでないと、うまく動作しません。VBEからの時、うまく動作しませんでした。
そこで、Offce XP 以降なら、下記のような方法もあります。

'以下コード
Sub myFileOpen()
  Dim Fn As String
  Dim ret As Long
  
  With Application.FileDialog(msoFileDialogFilePicker)
    With .Filters
      .Clear
      .Add "特殊テキストファイル(*.xms)", "*.xms"
    End With
    .FilterIndex = 1
    .InitialFileName = "ABC*"
    ret = .Show
    If ret = 0 Then Exit Sub
    Fn = .SelectedItems(1)
    
    '以下かみちゃんより
    Workbooks.OpenText Filename:=Fn, Origin:=932, StartRow:=1, _
      DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
      ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
      Comma:=True, Space:=False, Other:=False, _
      FieldInfo:=Array(Array(1, 1), Array(2, 2)), _
      TrailingMinusNumbers:=True
  End With
End Sub

【22874】Re:テキストファイルを開く
お礼  VBA初心者  - 05/3/5(土) 13:54 -

引用なし
パスワード
   ▼G-Luck さん:

回答ありがとうございます。
やはりファイル名の欄をアクティブ化しないといけませんでしたか。
自分で改良したのですが、うまくいかなかったです。
それではまた、分からない所があれば宜しくお願いします。

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