[リストへもどる]
一括表示

投稿時間:2003/10/30(Thu) 00:59
投稿者名:のど
Eメール:
URL :
タイトル:
2回目が・・・
はじめまして,のどです.
XPでVB6.0を使っています.

最近VBでエクセルのマクロを使い始めたのですが,
テキスト形式の数値データをエクセルで読み込んで処理したいと思っています.
いま,リストボックスにファイルをドラッグ&ドロップしてきて,ボタンを押したら
処理するようにしています.なんとか思うようにできたのですが,1度実行して処理した後,
続けて同じ処理を行うと,思うような結果が出力されません.

こんな感じです.

Private Sub Command1_Click()

  Const num = 13

  Dim File_Name(1 To num) As String
  
  'ファイル名格納
  For i = 1 To num
    File_Name(i) = File_List.List(i - 1)
  Next i
  
  Dim xlApp As Excel.Application
  Dim xlBook As Excel.Workbook
  Dim xlSheet As Excel.Worksheet

  Set xlApp = CreateObject("Excel.Application")
  Set xlBook = xlApp.Workbooks.Add
  Set xlSheet = xlBook.Worksheets(1)
  
  xlApp.Visible = True
  
  Dim xlBook3 As Excel.Workbook
  Dim xlSheet3 As Excel.Worksheet
  
  Set xlBook3 = xlApp.Workbooks.Open(File_Name(3))  'オープンするファイル名
  Set xlSheet3 = xlBook3.Worksheets(1)
  
  With xlSheet3
    .Columns("A:A").Select
    xlApp.Selection.TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
    .Range("A1").Select
    .Range(Selection, Selection.End(xlDown)).Select
    .Range(Selection, Selection.End(xlToRight)).Select
  End With

  With xlApp
    .Selection.Copy
    .Windows("Book1").Activate
    .Range("B2").Select
    .ActiveSheet.Paste
  End With
  
  Clipboard.Clear
  xlBook3.Close SaveChanges:=False
  Set xlBook3 = Nothing
  Set xlSheet3 = Nothing
  
  xlSheet.Range("A1").Select
  
  Set xlBook = Nothing
  Set xlSheet = Nothing
  Set xlApp = Nothing
  
  File_List.Clear
  
End Sub

どのようにすればよいのでしょうか?
よろしくお願いします.

投稿時間:2003/10/30(Thu) 01:04
投稿者名:のど
Eメール:
URL :
タイトル:
Re: 2回目が・・・
エラーメッセージです.

.Range(Selection, Selection.End(xlDown)).Select

のところで,”オブジェクト変数またはWithブロック変数が設定されていません.”
というエラーがでます.

投稿時間:2003/10/30(Thu) 01:19
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 2回目が・・・
ここのExcel&Wolrd関係の Excel上にCSV及びTXTファイルをデータ型を指定して読込む 他
見て下さい。


下記の部分は何をしているのでしょうか? その辺を見直せば2回目もOKになるかも
>   'ファイル名格納
>   For i = 1 To num
>     File_Name(i) = File_List.List(i - 1)
>   Next i

>   Set xlBook3 = xlApp.Workbooks.Open(File_Name(3))  'オープンするファイル名

投稿時間:2003/10/30(Thu) 01:58
投稿者名:のど
Eメール:
URL :
タイトル:
Re^2: 2回目が・・・
> ここのExcel&Wolrd関係の Excel上にCSV及びTXTファイルをデータ型を指定して読込む 他
> 見て下さい。
>
>
> 下記の部分は何をしているのでしょうか? その辺を見直せば2回目もOKになるかも
> >   'ファイル名格納
> >   For i = 1 To num
> >     File_Name(i) = File_List.List(i - 1)
> >   Next i
>
> >   Set xlBook3 = xlApp.Workbooks.Open(File_Name(3))  'オープンするファイル名

Excel&Wolrd関係の Excel上にCSV及びTXTファイルをデータ型を指定して読込む
をみてみましたが,特にへんなところはない気がするのですが...
指摘された部分も関係ないようでした.
ほかになにかありますでしょうか?

投稿時間:2003/10/30(Thu) 09:49
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: 2回目が・・・
> .Range(Selection, Selection.End(xlDown)).Select
>
> のところで,”オブジェクト変数またはWithブロック変数が設定されていません.”
> というエラーがでます.

上記の原因はここのExcel&WordのExcel のタスクを正常に終了できない現象及び
VBからExcel及びWordを操作する時の注意事項等の注意事項をよく読んで頂ければ
解るのですが、マクロをそのままコピーすると省略系(私の俗語)で書かれた部分
等がVBからはうまく実行できないので内部でエラーが発生しExcelが解放されず
次回使用した時にエラーとなって止まってしまいます。

    .Range(xlApp.Selection, xlApp.Selection.End(xlDown)).Select
    .Range(xlApp.Selection, xlApp.Selection.End(xlToRight)).Select

に変更してみて下さい。

投稿時間:2003/10/30(Thu) 11:25
投稿者名:rio
Eメール:
URL :
タイトル:
Re^4: 2回目が・・・
> > .Range(Selection, Selection.End(xlDown)).Select
> >
> > のところで,”オブジェクト変数またはWithブロック変数が設定されていません.”
> > というエラーがでます.
>
> 上記の原因はここのExcel&WordのExcel のタスクを正常に終了できない現象及び
> VBからExcel及びWordを操作する時の注意事項等の注意事項をよく読んで頂ければ
> 解るのですが、マクロをそのままコピーすると省略系(私の俗語)で書かれた部分
> 等がVBからはうまく実行できないので内部でエラーが発生しExcelが解放されず
> 次回使用した時にエラーとなって止まってしまいます。
>
>     .Range(xlApp.Selection, xlApp.Selection.End(xlDown)).Select
>     .Range(xlApp.Selection, xlApp.Selection.End(xlToRight)).Select
>
> に変更してみて下さい。

ありがとうございました.解決いたしました.