下記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
----
> 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 オブジェクトにはありません。
> ファイル指定時 → ファイルフルパスを示す1次元配列False (Variant型の一次元配列を格納した Variant)
ファイル指定時 → ファイルフルパスを示す1次元配列 (Variant型の一次元配列を格納した Variant)
ツイート | ![]() |