今使えるPCがMacしかないので、お手本通りに行きませんが、 どうしてもMacでも動かしてみたいと調べて、本日やっと 成功しました。とても嬉しかったので、近況報告しました。 (Excel for Mac 2016で動作確認済み)
Sub ReadTextFile()
Dim FileNum As Long 'ファイルを開く為に使う番号を格納する
Dim DataLine As String 'ファイル内の文字を一時的に格納
Dim MYPath As String 'ファイルのパスを格納
'デスクトップへのパスを設定
MYPath = MacScript("return (path to desktop folder) as String")
'デスクトップ上にある、対象のTextファイルのパスを設定
MYPath = MYPath & "textfile1.txt"
'FreeFile関数にてファイルを開くための番号を取得
FileNum = FreeFile()
'Open ファイル名 For 開き方 As #ファイル番号 Input(読み込み)で開くの意味
Open MYPath For Input As #FileNum
'ファイルがEOF(ファイルの終端)になるまでループをする
Do Until EOF(FileNum)
'Line Input #番号, 変数 (1行づつ読み込む)
Line Input #FileNum, DataLine
Debug.Print DataLine
Loop
'ファイルを閉じる
Close #FileNum
End Sub
Sub ReadTextFileBinary()
Dim FileNum As Long 'ファイルを開く為に使う番号を格納する
Dim MYPath As String 'ファイルのパスを格納
Dim buf() As Byte 'バイナリデータ処理用
'デスクトップへのパスを設定
MYPath = MacScript("return (path to desktop folder) as String")
'デスクトップ上にある、対象のTextファイルのパスを設定
MYPath = MYPath & "textfile1.txt"
'FreeFile関数にてファイルを開くための番号を取得
FileNum = FreeFile()
'Open ファイル名 For 開き方 As #ファイル番号
Open MYPath For Binary As #FileNum
'↑バイナリモードで開く
'ファイルの長さを取得し、変数bufの大きさを確保する
ReDim buf(1 To LOF(FileNum))
Get #FileNum, , buf 'ファイルを変数bufに読み込む
Close #FileNum 'ファイルを閉じる
Debug.Print StrConv(buf, vbUnicode)
Erase buf '用済みのため初期化
End Sub
> 今使えるPCがMacしかないので、お手本通りに行きませんが、 > どうしてもMacでも動かしてみたいと調べて、本日やっと > 成功しました。とても嬉しかったので、近況報告しました。 > (Excel for Mac 2016で動作確認済み)
たかちゃんさんの投稿
(投稿ID: 4939)
頭から煙が出そうですが、少しづつ仕組みを思い浮かべながら、
ノートに書いてみたりしながら、少しづづ進んでいます。
今使えるPCがMacしかないので、お手本通りに行きませんが、
どうしてもMacでも動かしてみたいと調べて、本日やっと
成功しました。とても嬉しかったので、近況報告しました。
(Excel for Mac 2016で動作確認済み)
参考サイト:
https://answers.microsoft.com/en-us/msoffice/forum/msoffice_word-mso_mac-mso_mac2016/read-text-file-line-by-line-using-vba-on-mac/7173f9dd-622d-432a-a960-816f0e734e96
https://www.petitmonte.com/excel/excel_vba_freefile.html
田中 宏明さんのコメント
(コメントID: 6955)
いつの間にか外部連携講座に進まれていたのですね。
Openステートメントでテキストファイルを一気に読み込む裏技もあります。バイナリモードで開き、テキストファイルに変換します。
よろしけば Macで動作するかどうか試してみてください。
> 今使えるPCがMacしかないので、お手本通りに行きませんが、
> どうしてもMacでも動かしてみたいと調べて、本日やっと
> 成功しました。とても嬉しかったので、近況報告しました。
> (Excel for Mac 2016で動作確認済み)
たかちゃんさんのコメント
(コメントID: 6956)
日々新しいことを学ぶ度に、嬉しくて思わず呟いていました。
こんな呟きコメントでしたが、返信をコメントを頂いて本当にありがとうございます。頂いたコードは、Macで正常に動作しました!ネットで調べながら読みときました。
テキストデータを配列に入れる所、Getの所で出てきたバイナリファイルについて等、とても勉強になりました。バイナリデータには、アプリケーション固有の情報が色々格納されるとのこと。(エクセルだったらセルの書式とか図形の位置など。)今のレベルでは具体的な使い方までは思いつきませんが、外部連携の講座のどこかでこの知識はとても役に立ちそうです。いつもアドバイスして頂き、本当にありがとうございます!(^^)
> たかちゃんさん:
>
> いつの間にか外部連携講座に進まれていたのですね。
>
> Openステートメントでテキストファイルを一気に読み込む裏技もあります。バイナリモードで開き、テキストファイルに変換します。
> よろしけば Macで動作するかどうか試してみてください。
小川 慶一さんのコメント
(コメントID: 6959)
Macのことは僕はくわしくないのですが、いろいろ興味深いです。
「OS非依存の方法を」ということでしたら、VBA以外でそもそもPythonを使うとかもありそうです。
(Python講座は、来年にはウチでもかなり充実されられるかと思っています)
たかちゃんさんのコメント
(コメントID: 6964)
Pythonではそういう使い方ができるのですね。実は今までずっとWindowsユーザで、最近Macを使うようになりました。
Pythonについては良く知らないのですが、ネットを見ていると結構使っている人が多そうです。新講座、とても楽しみです。
> (Python講座は、来年にはウチでもかなり充実されられるかと思っています)
>
小川 慶一さんのコメント
(コメントID: 6965)
エクセルVBAは、「Windowsありき、Windows上で動作するエクセルありき」という前提で開発されたプログラミング言語です。
他の選択肢はPython等いろいろありますが、最初からOSの制約なく動くように開発されたプログラミング言語であれば、こういう悩みは生じにくいです。
もっとも、「では、エクセルでの処理の自動化にはPythonのほうが良いですね!」となると、僕としてはそうは言い難い気がします。
個人的には、エクセルVBAのほうが、エクセル仕事効率化のためのコードを書くのは格段に楽と思います。
たかちゃんさんのコメント
(コメントID: 6967)
そうなんですね。ありがとうございます。
ここ最近調べていて、さすがにこのレベルまで来るとMacOSでは限界が
あるなぁとは薄々気づき始めました。(^^;
今後もエクセルやオフィスを中心とした仕事になりそうなので、Windows環境を用意する方向でいこうと思います。
> たかちゃんさん:
>
> エクセルVBAは、「Windowsありき、Windows上で動作するエクセルありき」という前提で開発されたプログラミング言語です。
> 他の選択肢はPython等いろいろありますが、最初からOSの制約なく動くように開発されたプログラミング言語であれば、こういう悩みは生じにくいです。
>
小川 慶一さんのコメント
(コメントID: 6968)
一般論としては、環境を本番に寄せたほうがトレーニングはより効果的にできます。
ほかの制約条件との関係もあるでしょうが、今後もエクセルやオフィスを中心とした仕事→Windows環境がメイン、ということでしたら、Windows環境でトレーニングされたほうが良いかと思います。
たかちゃんさんのコメント
(コメントID: 6984)
Windows環境を準備し、再びここまで辿り着きました。
前回の動画辺りから新しく覚えることも増え、とても大変ですが
Mac環境で同じプログラムを書こうと四苦八苦していた前回に
比べたら・・・理解度は雲泥の差です。
因みに、MacのBootCampを使用し、外付けHDにWindowsをインストール
して使っています。この環境を準備するのにもかなり苦労しましたが、、。もっと早くWindows環境を準備すれば良かったと思いました。
> たかちゃんさん:
>
> 一般論としては、環境を本番に寄せたほうがトレーニングはより効果的にできます。
小川 慶一さんのコメント
(コメントID: 6985)
おはようございます。
いろいろ楽しんでください。体験することがいちばんよい学びです☆