- - PR -
VBScriptでExcel
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-10-23 11:24
<環境>
OS Windows2000 Pro SP4 Excel Office2000 Sp3 現在、VBスクリプトでExcelのワークシートを操作するコードを 記載しています。行っていることは 1.excelオープン 2.セルのデータをチェック、要らない列、行の削除 3.タブ区切りで保存 以上です。 質問は、2.のデータチェックの所で、実際にデータが入っているのに、 空白としてみなされているようなのですが、どうしてこのような現象が 起こるのか分かりません。 以下は、実際に記載しているコードです。 <コード> Option Explicit Dim objExcel 'Excelアプリ Dim objBook Dim intRowCnt Dim intColCnt Dim strLipID Dim strChkFlg Set objExcel = CreateObject("Excel.Application") objExcel.Visible = False ObjExcel.Workbooks.Open "C:\Test\Format.xls" Set objBook = objExcel.ActiveWorkBook objExcel.DisplayAlerts = False strChkFlg = 0 With objBook.Sheets(1) intRowCnt = 3 strLipID = .Cells(intRowCnt,1) 'データチェック Do until strLipID = "" if .Cells(intRowCnt,5) = "" or .Cells(intRowCnt,6) = "" Then Msgbox strLipID & "error",vbOKOnly strChkFlg = 1 Exit Do End If if .Cells(intRowCnt,7) = "" or .Cells(intRowCnt, = "" Then Msgbox strLipID & "error",vbOKOnly strChkFlg = 1 Exit Do End If if .Cells(intRowCnt,9) = "" or .Cells(intRowCnt,11) = "" Then Msgbox strLipID & "error",vbOKOnly strChkFlg = 1 Exit Do End If intRowCnt = intRowCnt + 1 Loop If strChkFlg <> 1 Then .Rows("1:2").Delete .Columns("B:D").Delete 'タブ区切りで保存 objExcel.Workbooks(1).SaveAs "C:\Test\Test.txt",-4158 End If End With objBook.Close objExcel.Quit Set objBook = Nothing Set objExcel = Nothing 以上、何かしらのヒント、アドバイスを頂ければ幸いでございます。 | ||||
|
投稿日時: 2006-10-23 11:49
書いたとおりに実行されていると思いますよ。 何かしろ勘違いしている可能性が否めないです。 協力したいとは思うのですが、具体的にどのようなデータで試されているのかと、 どの位置のセルが、そうなってしまうのかを合わせて書いて頂かないと、検証ができないです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-10-23 12:00
excelのvbaでやってみそ
| ||||
|
投稿日時: 2006-10-23 12:07
じゃんぬねっとさん、ご返答ありがとうございます。
データの件、記載漏れ申し訳ございません。 下記、データに関して記載します。 1.ワークシートは、1枚。 2.セルのA3〜A9まで一意の識別コードが8桁(数字)で格納 3.セルのE3〜E9に日付(エクセルの書式は文字列に設定 YYYY/MM/DD)で格納 4.セルのF3〜F9に小数点含む数値データ(例 10.87etc)が格納(エクセルの書式に 標準設定) 上記を踏まえて、実際に、E3〜E9、F3〜F9にデータが格納されていますが、 下記のIF文が通ってしまいます。 <コードより一部抜粋> if Cells(3,5) = "" or Cells(3,6) = "" Then Msgbox strLipID & "error",vbOKOnly strChkFlg = 1 Exit Do End If ご指摘のとおり、私の勘違いの可能性が大だと思いますが、 どこがいけないのか検討がつかなくて・・・。 よろしくお願いします | ||||
|
投稿日時: 2006-10-23 12:25
[ メッセージ編集済み 編集者: ぷさいくろう 編集日時 2006-10-23 16:55 ] | ||||
|
投稿日時: 2006-10-23 13:38
VBScript上では、例えば、下記のようなコード
セルが空白かどうかチェックしたい時 IF .Cells(3,5) = "" Then のように=""という表現は使用できない んでしょうか? | ||||
|
投稿日時: 2006-10-23 13:53
#VB全般に疎いのですが、気になったので・・
比較演算子と代入演算子は各々どう書くんだったか覚えてらっしゃいますか?手元のOfficeXPのVBScriptのHelp(VBSCRIP5.CHM)を読む限りは「Eval」か「Execute」で明示した方がいいような・・ #私は普段触らない言語だとすぐリファレンスを引くので(汗 [ メッセージ編集済み 編集者: shimix 編集日時 2006-10-23 13:59 ] | ||||
|
投稿日時: 2006-10-23 14:02
「strLipID の値は、どこで変化するのだろうか」
とか 「if .Cells(intRowCnt,7) = "" or .Cells(intRowCnt, = "" Then の1行はエラーにならないのだろうか」 といった疑問はありますが、それは転記ミスとして。 ぷさいくろうさんの言う通り、Excel の VBA に転記して、1 行ずつデバッグしてみてはいかがですか? まずは、自分のソースコードを疑うべきかと思いますが。 |
1|2|3
次のページへ»