コンパイルエラーで進みません


104  2013-11-15 02:25:58  No: 143480  IP: [192.*.*.*]

下記VBAでコンパイルエラーを起こして進みません
解消法をご教授いただけると幸いです

やりたいこととしては
ボタンで任意のタブ区切りのテキストを指定し
シートに値をコピーすることです

----
Private Sub CommandButton1_Click()
Dim Sh As Worksheet
Dim FileN As String
Set Sh = ThisWorkbook.Sheets("import") '          <-- 読込みシート指定(※)
FileN = Application.GetOpenFilename("テキストファイル,*.txt")
If FileN <> "False" Then
    With Workbooks.OpenText(FileN, DataType:=xlDelimited, Tab:=True)
        .Sheets(1).UsedRange.Copy Sh.Rane("A1") '         <-- セル指定
        .Close
    End With
End If
Set Sh = Nothing
End Sub
----

編集    削除
魔界の仮面弁士  2013-11-19 11:57:18  No: 143481  IP: [192.*.*.*]

> Dim FileN As String
> FileN = Application.GetOpenFilename("テキストファイル,*.txt")
> If FileN <> "False" Then

GetOpenFilename の戻り値は String 型ではありません。
戻り値は Variant 型の変数で受け取る必要があります。

ダイアログがキャンセルされると、戻り値は「False」になります(「"False"」ではない)。
ファイルが選択された場合は、戻り値はそのファイル名へのフルパスになります。(内部処理形式 String な Variant 型)


蛇足ですが、GetOpenFilename に MultiSelect:=True が指定されてた場合には、
  キャンセル時  →  False (内部処理形式 Boolean な Variant型)
  ファイル指定時  →  ファイルフルパスを示す1次元配列False (Variant型の一次元配列を格納した Variant)
となります。


> With Workbooks.OpenText(FileN, DataType:=xlDelimited, Tab:=True)
OpenText メソッドは戻り値を返しません。(Function ではなく Sub です)
そのため、コンパイルエラーになっているのでしょう。この場合は
  Call Workbooks.OpenText(FileN, DataType:=xlDelimited, Tab:=True)
などとしてみてください。

> .Sheets(1).UsedRange.Copy Sh.Rane("A1") '         <-- セル指定
Range プロパティですよね。スペルミスでしょうか。
Rane というメンバーは、Worksheet オブジェクトにはありません。

編集    削除
魔界の仮面弁士  2013-11-19 11:58:39  No: 143482  IP: [192.*.*.*]

> ファイル指定時  →  ファイルフルパスを示す1次元配列False (Variant型の一次元配列を格納した Variant)

ファイル指定時  →  ファイルフルパスを示す1次元配列 (Variant型の一次元配列を格納した Variant)

編集    削除